算法训练营day11 栈与队列(栈的应用,单调队列,优先队列)

💡 解题思路

  1. 📝 确定输入与输出
  2. 🔍 分析复杂度
  3. 🔨 复杂题目拆分严谨且完整 地拆分为更小的可以解决的子问题(栈和队列的功能,栈和队列的变体应用)–(多总结
  4. 💭 选择处理逻辑: 根据拆分后的子问题,总结并选择合适的问题处理思路单调队列,优先队列
  5. 🔎 检查特殊情况:边界条件和特殊情况
  6. 🏁 返回结果

7. 逆波兰表达式求值 (栈的应用)

class Solution {public static int evalRPN(String[] tokens) {Set<Character> set = new HashSet<>();set.add('+');set.add('-');set.add('*');set.add('/');Stack<Integer> stack = new Stack<>();for (String token : tokens) {char c = token.charAt(0);if (token.length() == 1 && set.contains(c)) {if (stack.size() < 2) {  } else {int a = stack.pop();int b = stack.pop();stack.push(calculate(b, a, c));}} else {stack.push(Integer.parseInt(token));}}return stack.pop();}public static int calculate(int num1, int num2, char operation) {int result = 0;switch(operation) {case '+':result = num1 + num2;break;case '-':result = num1 - num2;break;case '*':result = num1 * num2;break;case '/':result = num1 / num2;break;default:}return result;}
}

239. 滑动窗口最大值(单调队列)

class Solution {public int[] maxSlidingWindow(int[] nums, int k) {int n = nums.length;Deque<Integer> deque = new LinkedList<Integer>();for (int i = 0; i < k; i++) {while(!deque.isEmpty() && nums[deque.peekLast()] <= nums[i]) {deque.pollLast();}deque.offerLast(i);}int[] ans = new int[n-k+1];ans[0] = nums[deque.peekFirst()];for (int i = k; i < n; i++) {while(!deque.isEmpty() && nums[i] >= nums[deque.peekLast()]) {deque.pollLast();}deque.offerLast(i);while (deque.peekFirst() <= i - k) {deque.pollFirst();}ans[i-k+1] = nums[deque.peekFirst()];}return ans;}
}

347.前 K 个高频元素(优先队列)

class Solution {public int[] topKFrequent(int[] nums, int k) {Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (int num : nums) {map.put(num, map.getOrDefault(num, 0) + 1);}PriorityQueue<int[]> queue = new PriorityQueue<int[]>(new Comparator<int[]>() {public int compare(int[] m, int[] n) {return m[1] - n[1];}});for (Map.Entry<Integer, Integer> entry : map.entrySet()) {int num = entry.getKey(), count = entry.getValue();if (queue.size() == k) {if (queue.peek()[1] < count) {queue.poll();queue.offer(new int[] {num, count});}} else {queue.offer(new int[]{num, count});}}int[] res = new int[k];for (int i = 0; i < k; i++) {res[i] = queue.poll()[0];}return res;}
}

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

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

相关文章

C#中的反射

dll和exe文件的区别 用途&#xff1a; .exe&#xff08;可执行文件&#xff09;&#xff1a;是可以直接运行的程序文件。当你双击一个 .exe 文件或在命令行中输入它的名字&#xff0c;操作系统会加载并执行这个程序。 .dll&#xff08;动态链接库&#xff09;&#xff1a;包含…

graphviz subgraph添加边界框

subgraph name 属性必须要以cluster开头。 A Quick Introduction to GraphvizAn awesome tool for software documentation and visualizing graphshttps://www.worthe-it.co.za/blog/2017-09-19-quick-introduction-to-graphviz.html digraph {rankdir"LR"// the n…

新版k8s拉取镜像失败问题

新版版从k8s从1.23后放弃使用docker容器作为的默认运行时了&#xff0c;而是采用的containerd&#xff0c;使用时不在使用docker拉取镜像&#xff0c;这就带来了一系列的问题。在k8s1.24之后用户可以选择docker或者选择contained作为容器运行时&#xff0c;如果不指定使用的doc…

【探索Linux】P.39(传输层 —— TCP的三次 “握手” 和四次 “挥手” )

阅读导航 引言一、TCP的三次握手1. 简介2. 图解三次握手3. 名词解释&#xff08;1&#xff09;SYN&#xff08;同步序列编号&#xff09;包&#xff08;2&#xff09;SYN-ACK&#xff08;同步确认&#xff09;包&#xff08;3&#xff09;ACK&#xff08;确认&#xff09;包 4.…

基于matlab的SVR回归模型

1 原理 SVR&#xff08;Support Vector Regression&#xff09;回归预测原理&#xff0c;基于支持向量机&#xff08;SVM&#xff09;的回归分支&#xff0c;其核心思想是通过寻找一个最优的超平面来进行回归预测&#xff0c;并处理非线性回归问题。以下是SVR回归预测原理的系统…

浪潮天启防火墙TQ2000远程配置方法SSL-V偏、L2xx 配置方法

前言 本次设置只针对配置V偏&#xff0c;其他防火墙配置不涉及。建议把防火墙内外网都调通后再进行V偏配置。 其他配置可参考&#xff1a;浪潮天启防火墙配置手册 配置SSLVxx 在外网端口开启SSLVxx信息 开启SSLVxx功能 1、勾选 “启用SSL-Vxx” 2、设置登录端口号&#xff0…

QT 图片处理

1.qt 图片控件 在Qt中&#xff0c;用于显示图片的控件主要是QLabel。以下是关于Qt图片控件的详细介绍&#xff1a; QLabel控件&#xff1a; QLabel是Qt中用于显示文本或图片的控件。在显示图片时&#xff0c;QLabel通过setPixmap()函数来设置要显示的图片。QPixmap代表Qt中的…

分析函数关系调用

参考下面 这个是专题 https://blog.csdn.net/benkaoya/category_7550213.html 绘制函数调用图&#xff08;call graph&#xff09;&#xff08;4&#xff09;&#xff1a;doxygen graphviz 绘制函数调用图&#xff08;call graph&#xff09;&#xff08;4&#xff09;&…

面试内容集合

用例设计方法 &#xff08;一&#xff09;等价类划分  常见的软件测试面试题划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理…

智慧校园毕业管理:全面解读毕业批次功能

在智慧校园的毕业管理系统中&#xff0c;毕业批次模块通过其精心设计的毕业批次功能&#xff0c;为即将离校的学子们提供了一个高效、便捷的过渡平台。这一特色功能聚焦于特定时间段内的毕业生群体&#xff0c;巧妙融合数字技术&#xff0c;从信息核实到最终的离校程序&#xf…

代码随想录二刷7.22|977.有序数组的平方

暴力解法&#xff1a; ——如果想暴力解决这个问题的话&#xff0c;可以像题目那样&#xff0c;先将每一个元素平方&#xff0c;然后再排序 双指针&#xff1a; ——从题目中找到的信息&#xff1a;这是一个非递减顺序的整数数组&#xff0c;从例子中&#xff0c;可以容易看…

西邮计科嵌入式复习

西邮嵌入式复习 一、第一章复习二、第二章复习三、第三章复习四、第四章复习 一、第一章复习 二、第二章复习 三、第三章复习 四、第四章复习

【YashanDB知识库】YAS-02024 lock wait timeout, wait time 0 milliseconds

【标题】错误码处理 【问题分类】锁等待超时 【关键字】YAS-02024 【问题描述】执行语句时候&#xff0c;因锁等待超时执行语句失败 【问题原因分析】数据库默认锁等待时间为0秒&#xff0c;如果执行语句存在锁等待过长会执行失败 【解决/规避方法】 1、调整锁等待的时间…

内网服务器通过squid代理访问外网

一、背景 现在要对172.16.58.158服务器进行openssh升级操作,我用之前写好的升级脚本执行后,发现没有备份旧的ssh程序文件,然后还卸载了oenssl-devel,然后我发现其他服务器ssh该服务器失败。同时脚本执行时报错“ configure: error: *** zlib.h missing - please install first …

Python项目开发实战,图像网站下载,案例教程编程实例课程详解

Python项目开发实战中,图像网站下载是一个既实用又充满挑战的项目。这类项目不仅能够帮助开发者掌握Python编程的基本技能,还能深入理解网络爬虫、图像处理、数据存储等高级技术。 一、项目背景与目标 在数字化时代,图像作为信息传递的重要载体,广泛应用于广告、设计、教育…

扩展欧几里得c++

扩展欧几里得c 裴蜀&#xff08;贝祖&#xff09;定理扩展欧几里得求解递归代码 裴蜀&#xff08;贝祖&#xff09;定理 法国数学家艾蒂安裴蜀&#xff0c;对任何整数a、b和它们的最大公约数d若a,b是整数,且gcd(a,b)d&#xff0c;那么对于任意的整数x,y,axby都一定是d的倍数一…

无人驾驶大热,新能源汽车智能化中的算网支持

来源新华社&#xff1a;百度“萝卜快跑”全无人驾驶汽车行驶在路上 当前&#xff0c;新能源汽车产业数智化已成为全球汽车产业数字化转型的焦点。一方面&#xff0c;随着人工智能、大数据、云计算等技术的深度融合&#xff0c;新能源汽车在自动驾驶、智能互联、能源管理等方面…

xmind梳理测试点,根据这些测试点去写测试用例

基本流&#xff08;冒烟用例必写&#xff09; 备选流 公共测试点&#xff1a;

Linux服务监控自动巡检脚本--推送钉钉告警

1. 编写服务监控自动巡检脚本 [rootlocalhost ~]# cat /opt/port_monitor_alarm_by_dingding.sh #!/bin/bash# 定义需要监控服务对应的端口列表 port_list"3308 1242 35690 65500 10410"# 定义接收通知的钉钉机器人的 Webhook URL webhook_url"https…

【题解】42. 接雨水(动态规划 预处理)

https://leetcode.cn/problems/trapping-rain-water/description/ class Solution { public:int trap(vector<int>& height) {int n height.size();// 预处理数组vector<int> lefts(n, 0);vector<int> rights(n, 0);// 预处理记录左侧最大值lefts[0] …