春招冲刺百题计划|队列

Java基础复习

  1. Java数组的声明与初始化
  2. Java ArrayList
  3. Java HashMap
  4. Java String 类
  5. Java LinkedList
  6. Java Deque继承LinkedList
  7. Java Set
  8. Java 队列

第一题:387. 字符串中的第一个唯一字符

在这里插入图片描述

class Solution {public int firstUniqChar(String s) {//最简单的方法就是暴力遍历,时间复杂度在n^2// for(int i=0; i<s.length(); i++){//     int flag = 1;//     for(int j=0; j<s.length(); j++){//         if(j!=i&&s.charAt(j)==s.charAt(i)){//             flag=0;//             break;//         }//     }//     if(flag==1){//         return i;//     }// }// return -1;//怎么变成n的复杂度呢?就只遍历一次。找一个表存起来Map<Character, Integer> frequency = new HashMap<Character, Integer>();for (int i = 0; i < s.length(); ++i) {char ch = s.charAt(i);frequency.put(ch, frequency.getOrDefault(ch, 0) + 1);//其实还是hash的部分。}for (int i = 0; i < s.length(); ++i) {if (frequency.get(s.charAt(i)) == 1) {return i;}}return -1;}
}

队列:

class Solution {public int firstUniqChar(String s) {Map<Character, Integer> position = new HashMap<Character, Integer>();Queue<Pair> queue = new LinkedList<Pair>();int n = s.length();for (int i = 0; i < n; ++i) {char ch = s.charAt(i);if (!position.containsKey(ch)) {position.put(ch, i);queue.offer(new Pair(ch, i)); //向链表末尾添加元素,返回是否成功,成功为 true,失败为 false。} else {position.put(ch, -1);while (!queue.isEmpty() && position.get(queue.peek().ch) == -1) {queue.poll();}}}return queue.isEmpty() ? -1 : queue.poll().pos;//删除并返回第一个元素。}class Pair {char ch;int pos;Pair(char ch, int pos) {this.ch = ch;this.pos = pos;}}
}

第二题:你可以安排的最多任务数

在这里插入图片描述
思路纠正:来自leetcode官方
在这里插入图片描述

class Solution {//很粗糙的贪心的想法:很明显的逻辑漏洞。// Arrays.sort(tasks);// Arrays.sort(workers);// Boolean[] worked = new Boolean[workers.length];// int sum=0;// Arrays.fill(worked, false);// for(int i=0; i<tasks.length; i++){//     for(int j=0; j<workers.length; j++){//         if(worked[j]==false&&workers[j]>=tasks[i]){//             worked[j]=true;//             sum++;//             break;//         }else if(worked[j]==false&&pills>0&&workers[j]+strength>=tasks[i]){//             worked[j]=true;//             pills--;//             sum++;//             break;//         }//     }// }// return sum;public int maxTaskAssign(int[] tasks, int[] workers, int pills, int strength) {//但其实,回归到问题本身,找得是最大的sum。而sum的取值范围是[0, min(tasks.length, workers.length)],然后就二分法查找(非常经典的套路)。Arrays.sort(tasks);Arrays.sort(workers);int min = 0;int max = Math.min(tasks.length, workers.length);// 二分法while (min < max) {int mid = (min + max + 1) >> 1;if(check(mid,tasks,workers,pills,strength)){//重点在于如何check,求解数学题,已知那么多人,那么多外援,你能不能完成给定的工作量。min = mid;}else {max = mid-1;}}return min;}public boolean check(int k, int[] tasks,int[] workers,int pills, int strength){Deque<Integer> queue = new ArrayDeque<>();int index = workers.length - 1;//首先,肯定把任务范围给圈定在最小的k个里面。工人选择力量最大的k个来完成。for (int i = k - 1; i >= 0; i--) {//本轮次的目的是找到最少一个工人能够应付tasks[i]int task = tasks[i];//把吃了药丸能够完成 当前工作量最大的工作 的 工人 加入队列while (index >= 0 && workers[index] + strength >= task) {queue.addLast(workers[index]);index--;}//没有一个人能完成 当前工作量最大 的工作if (queue.size() == 0) {return false;}//如果有一群人能够完成,那么我们的挑选原则是(选不吃药情况下最大的,或者吃药情况下最小的。)if(queue.getFirst() >= task){//不需要吃药的情况,让队首工作queue.removeFirst();}else if(pills -- > 0 ){// 需要吃药丸时,让队尾吃药queue.removeLast();}else {return false;}}return true;}}

第三题:最近的请求次数

在这里插入图片描述
其实就是维护一个队列而已。

class RecentCounter {Deque<Integer> requests = new LinkedList<Integer>();public RecentCounter() {requests.clear();}public int ping(int t) {requests.addLast(t);int min = t-3000;int max = t;int sum = 0;while(!requests.isEmpty()&&requests.getFirst()<min){requests.removeFirst();}return requests.size();}
}/*** Your RecentCounter object will be instantiated and called as such:* RecentCounter obj = new RecentCounter();* int param_1 = obj.ping(t);*/

第四题:戳印序列

在这里插入图片描述
过于难了。官方给出的解法是逆推。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/44820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

p14数组(2)

数组作为函数的参数 冒泡排序 两两比较 void bubble_sort(int arr[],int sz) {int i0;for(i0;i<sz-1;i){//每一趟冒泡排序int j0;for(j0;j<sz-1-i;j){if(arr[j]>arr[j1]){int tmparr[j];arr[j]arr[j1];arr[j1]tmp;}}} } int main(){int arr[]{9,8,7,6,5,4,3,2,1,0}…

关于woocommerce product data tabs, 特别是additional information

woocommerce product data tabs&#xff0c; 也就是默认的这三个&#xff1a; description additional information reviews 包括如何删除&#xff0c;重命名&#xff0c;改显示顺序等等&#xff0c;参考官方文档&#xff1a; https://woocommerce.com/document/editing-p…

C# CvDnn部署CoupledTPS实现旋转图像矫正

C# CvDnn部署CoupledTPS实现旋转图像矫正 目录 说明 效果 模型信息 项目 代码 下载 说明 TPAMI2024 - Semi-Supervised Coupled Thin-Plate Spline Model for Rotation Correction and Beyond github地址&#xff1a;https://github.com/nie-lang/CoupledTPS 代码实现…

240710_昇思学习打卡-Day22-LSTM+CRF序列标注

240710_昇思学习打卡-Day22-LSTMCRF序列标注 在正式开始LSTMCRF序列标注之前&#xff0c;我们先来了解一下条件随机场&#xff0c;以下仅做简单介绍。 CRF全称Conditional Random Field&#xff0c;按照名字来理解&#xff0c;条件随机&#xff0c;随机输入&#xff0c;条件输…

ReoGrid代替EXCEL显示数据,可视化修改ReoGrid.Mvvm:ReoGrid绑定模型

ReoGrid 是 C&#xff03; 编写的.NET 电子表格控件&#xff08;类似 Excel&#xff09;。支持单元格合并&#xff0c;边框样式&#xff0c;图案背景颜色&#xff0c;数据格式&#xff0c;冻结&#xff0c;公式&#xff0c;宏和脚本执行&#xff0c;表格事件等。支持 Winform\W…

游戏视频是后期配音好还是边录边配 游戏视频怎么剪辑制作才能火 视频剪辑免费软件

游戏视频后期配音是先配还是先剪&#xff1f;游戏视频后期配音没有统一的准则&#xff0c;可以先配&#xff0c;也可以后配&#xff0c;主要是根据内容而定。游戏视频剪辑在游戏玩家中十分流行&#xff0c;那么&#xff0c;游戏视频怎么剪辑制作&#xff1f;下面让我们以具体的…

ai写作软件哪个好用?这些写作工具值得收藏

在创意写作的世界里&#xff0c;每个字词都是作者情感与灵魂的载体。 但灵感的闪现与文字的成型之间&#xff0c;往往存在着一段漫长且充满挑战的旅程。幸运的是&#xff0c;人工智能技术的崛起带来了AI写作软件&#xff0c;它们不仅能够点燃创作的火花&#xff0c;还能辅助我…

探索 ASTRA.AI:打造低代码多模态 AI 应用的开源平台

声网&#xff08;Agora&#xff09;研发的 ASTRA 平台&#xff0c;作为一款面向大语言模型应用开发的开源解决方案&#xff0c;无疑为 AI 领域注入了新的活力。它巧妙地结合了 BaaS&#xff08;后端即服务&#xff09;概念与大型语言模型的运营&#xff0c;使得创建高性能的生成…

如何给CAD文件加密丨五种超级简单的CAD图纸加密方法

CAD图纸作为企业核心竞争力的体现&#xff0c;其安全性直接关系到企业的生产效率和市场竞争力。一旦图纸被泄露&#xff0c;竞争对手可能会迅速模仿或改进产品&#xff0c;从而抢占市场份额。此外&#xff0c;图纸的非法获取还可能涉及知识产权纠纷&#xff0c;给企业带来法律风…

镜像加速方法

参考&#xff1a; https://github.com/DaoCloud/public-image-mirror 使用DaoCloud加速&#xff1a; 比如我想在dockerhub下载这个镜像&#xff1a; 本来的命令是&#xff1a; docker pull openjdk:11.0-jdk-slim-buster在要拉取的镜像前&#xff0c;添加前缀&#xff1a;m.…

迅为RK3588S开发板广泛用于边缘技术,人工智能,智能家居,智慧零售,智能网关等

性能强 iTOP-3588S开发板采用瑞芯微RK3588S处理器&#xff0c;是全新一代AloT高端应用芯片&#xff0c;搭载八核64位CPU&#xff0c;四核Cortex-A76和四核Cortex-A55架构主频高达2.4GHZ&#xff0c;8GB内存&#xff0c;32GBEMMC。 四核心架构GPU内置GPU可以完全兼容0penGLES1.1…

MFC Ribbon菜单中英实时文切换方法

简介 最近在搞一个老外的项目&#xff0c;本来谈的好好的&#xff0c;纯英文界面。项目接近尾声了&#xff0c;又提出了中英文实时切换的新需求&#xff0c;没办法就只能想办法&#xff0c;毕竟客户最大嘛。 实现方法 还好本来的ribbon英文菜单不复杂&#xff0c;就用纯C编码…

struts2如何防止XSS脚本攻击(XSS防跨站脚本攻击过滤器)

只需要配置一个拦截器即可解决参数内容替换 一、配置web.xml <filter><filter-name>struts-xssFilter</filter-name><filter-class>*.*.filters.XssFilter</filter-class></filter><filter-mapping><filter-name>struts-xss…

专属大学生的创作活动,你在CSDN坚持创作,虚竹哥带你成长,带你涨粉

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。2022年度博客之星评选TOP 10&#x1f3c6;&#xff0c;Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作…

PHP智慧社区小区物业管理系统小程序源码

让生活更便捷&#xff0c;社区更和谐✨ &#x1f3e1;【开篇&#xff1a;智慧生活&#xff0c;从社区开始】&#x1f3e1; 在快节奏的现代生活中&#xff0c;寻找一份便捷与舒适成为了我们共同的追求。小区&#xff0c;作为我们日常生活的温馨港湾&#xff0c;其管理水平和服…

安泰高压放大器设计要求是什么样的

高压放大器是一种在电子系统中用于放大高电压信号的重要组件。它通常用于应对需要处理高电压信号的应用&#xff0c;如医疗设备、实验室仪器和通信系统。设计高压放大器需要满足一系列严格的要求&#xff0c;以确保其性能稳定、可靠&#xff0c;并符合特定应用的需求。 以下是关…

适合学生写作业的台灯怎么选?一文读懂护眼台灯怎么选!

不知大家发现没有&#xff0c;近些年&#xff0c;戴眼镜的小孩儿是越来越多了&#xff0c;甚至有的地方好多刚上小学一年级的孩子&#xff0c;就已经戴着200度的近视镜了。据统计&#xff0c;如今&#xff0c;中国小学生近视比例为42%&#xff0c;初中生近视比例为80.7%&#x…

LabVIEW航空发动机试验器数据监测分析

1. 概述 为了适应航空发动机试验器的智能化发展&#xff0c;本文基于图形化编程工具LabVIEW为平台&#xff0c;结合航空发动机试验器原有的软硬件设备&#xff0c;设计开发了一套数据监测分析功能模块。主要阐述了数据监测分析功能设计中的设计思路和主要功能&#xff0c;以及…

捷配笔记-如何设计PCB板布线满足生产标准?

PCB板布线是铺设连接各种设备与通电信号的路径的过程。PCB板布线是铺设连接各种设备与通电信号的路径的过程。 在PCB设计中&#xff0c;布线是完成产品设计的重要步骤。可以说&#xff0c;之前的准备工作已经为它做好了。在整个PCB设计中&#xff0c;布线设计过程具有最高的极限…

[Err] 2006 - MySQL server has gone away 错误 MySQL server hasgoneaway报错原因分析及解决办法

导入sql文件报错&#xff1a; Your SQL statement was too large. 当查询的结果集超过 max_allowed_packet 也会出现这样的报错。定位方法是打出相关报错的语句。 用select * into outfile 的方式导出到文件&#xff0c;查看文件大小是否超过 max_allowed_packet &#xff0c;如…