解析网站dnshtml5做网站心得体会

news/2025/9/28 14:07:39/文章来源:
解析网站dns,html5做网站心得体会,网站访问速度检测,怎么做网上直营店网站232.用栈实现队列 232. 用栈实现队列 简单 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作#xff08;push、pop、peek、empty#xff09;#xff1a; 实现 MyQueue 类#xff1a; void push(int x) 将元素 x 推到队列的末尾int pop() 从队列…232.用栈实现队列 232. 用栈实现队列 简单 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作push、pop、peek、empty 实现 MyQueue 类 void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空返回 true 否则返回 false 说明 你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。你所使用的语言也许不支持栈。你可以使用 list 或者 deque双端队列来模拟一个栈只要是标准的栈操作即可。 import java.util.Deque; import java.util.LinkedList;class MyQueue {private DequeInteger stackIn; // 输入栈用于入队操作private DequeInteger stackOut; // 输出栈用于出队和获取队首元素操作public MyQueue() {this.stackIn new LinkedListInteger();this.stackOut new LinkedListInteger();}// 将元素推入输入栈public void push(int x) {stackIn.push(x);}// 从队列中弹出元素public int pop() {unload(); // 确保输出栈不为空return stackOut.pop();}// 获取队列首部的元素public int peek() {unload(); // 确保输出栈不为空return stackOut.peek();}// 检查队列是否为空public boolean empty() {if(stackIn.isEmpty() stackOut.isEmpty()){return true;}return false;}// 从输入栈向输出栈转移元素private void unload(){if(!stackOut.isEmpty()){return; // 如果输出栈不为空无需转移}// 当输出栈为空时将输入栈的元素逐个弹出并压入输出栈while (!stackIn.isEmpty()) {stackOut.push(stackIn.pop());}} }/*** 您的 MyQueue 对象将被实例化并按如下方式调用:* MyQueue obj new MyQueue();* obj.push(x);* int param_2 obj.pop();* int param_3 obj.peek();* boolean param_4 obj.empty();*/上述代码的主要思路是将元素从输入栈中转移到输出栈中时将元素的顺序颠倒此时再从输出栈中pop或者peek元素时的顺序就是队列的先入先出的顺序。 225.用队列实现栈 225. 用队列实现栈 简单 请你仅使用两个队列实现一个后入先出LIFO的栈并支持普通栈的全部四种操作push、top、pop 和 empty。 实现 MyStack 类 void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的返回 true 否则返回 false 。 注意 你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 这些操作。你所使用的语言也许不支持队列。 你可以使用 list 列表或者 deque双端队列来模拟一个队列 , 只要是标准的队列操作即可。 import java.util.Queue; import java.util.LinkedList;class MyStack {QueueInteger first; // 第一个队列QueueInteger second; // 第二个队列public MyStack() {first new LinkedList(); // 初始化第一个队列second new LinkedList(); // 初始化第二个队列}// 将元素推入栈顶public void push(int x) {first.offer(x); // 将元素添加到第一个队列中}// 弹出栈顶元素public int pop() {// 如果第一个队列不为空则将其除了最后一个元素外的所有元素转移到第二个队列中if(first.isEmpty()){QueueInteger temp first;first second;second temp;}int size first.size();for(int i 0; i size - 1; i ){second.offer(first.poll());}return first.poll(); // 返回第一个队列的最后一个元素即栈顶元素}// 获取栈顶元素public int top() {if(first.isEmpty()){QueueInteger temp first;first second;second temp;}int size first.size();for(int i 0; i size - 1; i ){second.offer(first.poll());}return first.peek(); // 返回第一个队列的最后一个元素即栈顶元素但不移除}// 检查栈是否为空public boolean empty() {if(first.isEmpty() second.isEmpty()){return true;}return false;} }/*** 您的 MyStack 对象将被实例化并按如下方式调用:* MyStack obj new MyStack();* obj.push(x);* int param_2 obj.pop();* int param_3 obj.top();* boolean param_4 obj.empty();*/上述代码的主要思路是元素从第一个队列转移到第二个队列取第一个队列的第一个元素此时元素的顺序存在第二个队列中是没有改变的每次进行取出操作时将非空的数组当做第一个队列 20.有效的括号 20. 有效的括号 简单 提示 给定一个只包括 (){}[] 的字符串 s 判断字符串是否有效。 有效字符串需满足 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。 import java.util.Deque; import java.util.LinkedList;class Solution {public boolean isValid(String s) {DequeCharacter deque new LinkedList(); // 使用双端队列来存储左括号for(int i 0; i s.length(); i){char sChar s.charAt(i);// 如果是左括号则将对应的右括号入栈if(sChar (){deque.push());}else if(sChar {){deque.push(});}else if(sChar [){deque.push(]);}// 如果是右括号但栈为空或栈顶元素不匹配当前右括号则返回falseelse if(deque.isEmpty() || deque.peek() ! sChar){return false;}// 如果是右括号且与栈顶元素匹配则将栈顶元素出栈else{deque.pop();}}// 如果栈不为空则说明左括号多于右括号返回falseif(!deque.isEmpty()){return false;}return true; // 栈为空表示所有括号都匹配返回true} }主要的思路是每遇到一个左括号就放一个与他对应的右括号到栈中每遇到一个右括号就去栈中找最新一个放进去的右括号匹配如果匹配就从栈中移除一个不匹配则失败。如果最后栈中还有右括号没有被匹配掉就失败 1047.删除字符串中的所有相邻重复项 1047. 删除字符串中的所有相邻重复项 简单 提示 给出由小写字母组成的字符串 S重复项删除操作会选择两个相邻且相同的字母并删除它们。 在 S 上反复执行重复项删除操作直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例 输入abbaca 输出ca 解释 例如在 abbaca 中我们可以删除 bb 由于两字母相邻且相同这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 aaca其中又只有 aa 可以执行重复项删除操作所以最后的字符串为 ca。 import java.util.Deque; import java.util.LinkedList;class Solution {public String removeDuplicates(String s) {// 使用一个栈来存储字符DequeCharacter stack new LinkedList();// 遍历输入字符串for(int i 0; i s.length(); i){// 如果栈不为空并且当前字符与栈顶字符相同if(!stack.isEmpty() stack.peek() s.charAt(i)){// 移除栈顶字符stack.pop();} else {// 将当前字符压入栈中stack.push(s.charAt(i));}}// 使用 StringBuilder 构建结果字符串StringBuilder builder new StringBuilder();// 将栈中字符出栈并添加到字符串构建器中while(!stack.isEmpty()){builder.append(stack.pop());}// 反转字符串构建器中的内容builder.reverse();// 返回去除重复字符后的结果字符串return builder.toString();} }本质上是匹配问题 150.逆波兰表达式 150. 逆波兰表达式求值 中等 给你一个字符串数组 tokens 表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意 有效的算符为 、-、* 和 / 。每个操作数运算对象都可以是一个整数或者另一个表达式。两个整数之间的除法总是 向零截断 。表达式中不含除零运算。输入是一个根据逆波兰表示法表示的算术表达式。答案及所有中间计算结果可以用 32 位 整数表示。 示例 1 输入tokens [2,1,,3,*] 输出9 解释该算式转化为常见的中缀算术表达式为((2 1) * 3) 9示例 2 输入tokens [4,13,5,/,] 输出6 解释该算式转化为常见的中缀算术表达式为(4 (13 / 5)) 6示例 3 输入tokens [10,6,9,3,,-11,*,/,*,17,,5,] 输出22 解释该算式转化为常见的中缀算术表达式为((10 * (6 / ((9 3) * -11))) 17) 5((10 * (6 / (12 * -11))) 17) 5((10 * (6 / -132)) 17) 5((10 * 0) 17) 5(0 17) 517 522 提示 1 tokens.length 104tokens[i] 是一个算符、-、* 或 /或是在范围 [-200, 200] 内的一个整数 import java.util.Deque; import java.util.LinkedList;class Solution {// 计算逆波兰表达式public int evalRPN(String[] tokens) {// 使用栈存储操作数DequeInteger stack new LinkedListInteger();int n tokens.length;// 遍历逆波兰表达式的每个元素for (int i 0; i n; i) {String token tokens[i];// 如果是数字则压入栈中if (isNumber(token)) {stack.push(Integer.parseInt(token));} else {// 如果是运算符则取出栈顶的两个操作数进行计算并将结果压入栈中int num2 stack.pop();int num1 stack.pop();switch (token) {case :stack.push(num1 num2);break;case -:stack.push(num1 - num2);break;case *:stack.push(num1 * num2);break;case /:stack.push(num1 / num2);break;default:// 对于无效的运算符不做任何操作}}}// 返回栈顶元素即为最终计算结果return stack.pop();}// 判断字符串是否为数字public boolean isNumber(String token) {// 如果不是加减乘除运算符则认为是数字return !(.equals(token) || -.equals(token) || *.equals(token) || /.equals(token));} }难点在于什么是逆波兰表达式代码思路很好理解 栈的最后表演 | LeetCode150. 逆波兰表达式求值_哔哩哔哩_bilibili 239.滑动窗口最大值 239. 滑动窗口最大值 困难 提示 给你一个整数数组 nums有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1 输入nums [1,3,-1,-3,5,3,6,7], k 3 输出[3,3,5,5,6,7] 解释 滑动窗口的位置 最大值 --------------- ----- [1 3 -1] -3 5 3 6 7 31 [3 -1 -3] 5 3 6 7 31 3 [-1 -3 5] 3 6 7 51 3 -1 [-3 5 3] 6 7 51 3 -1 -3 [5 3 6] 7 61 3 -1 -3 5 [3 6 7] 7示例 2 输入nums [1], k 1 输出[1]提示 1 nums.length 105-104  nums[i] 1041 k nums.length 注意这里的提示k的范围 暴力解法通过40/51超时 class Solution {// 滑动窗口的最大值public int[] maxSlidingWindow(int[] nums, int k) {int n nums.length;// 初始化输出数组的长度int [] output new int[n - k 1];// 遍历数组计算滑动窗口的最大值for (int i 0; i n - k 1; i) {// 初始化当前窗口的最大值为整数最小值int max Integer.MIN_VALUE;// 遍历当前窗口内的元素寻找最大值for(int j i; j i k; j) {max Math.max(max, nums[j]);}// 将当前窗口的最大值存入输出数组output[i] max;}// 返回结果数组return output;} }class MyQueue {DequeInteger deque new LinkedList();//弹出元素时比较当前要弹出的数值是否等于队列出口的数值如果相等则弹出//同时判断队列当前是否为空void poll(int val) {if (!deque.isEmpty() val deque.peek()) {deque.poll();}}//添加元素时如果要添加的元素大于入口处的元素就将入口元素弹出//保证队列元素单调递减//比如此时队列元素3,12将要入队比1大所以1弹出此时队列3,2void add(int val) {while (!deque.isEmpty() val deque.getLast()) {deque.removeLast();}deque.add(val);}//队列队顶元素始终为最大值int peek() {return deque.peek();} }class Solution {public int[] maxSlidingWindow(int[] nums, int k) {if (nums.length 1) {return nums;}int len nums.length - k 1;//存放结果元素的数组int[] res new int[len];int num 0;//自定义队列MyQueue myQueue new MyQueue();//先将前k的元素放入队列for (int i 0; i k; i) {myQueue.add(nums[i]);}res[num] myQueue.peek();for (int i k; i nums.length; i) {//滑动窗口移除最前面的元素移除是判断该元素是否放入队列myQueue.poll(nums[i - k]);//滑动窗口加入最后面的元素myQueue.add(nums[i]);//记录对应的最大值res[num] myQueue.peek();}return res;} } 239. 滑动窗口最大值 困难 提示 给你一个整数数组 nums有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1 输入nums [1,3,-1,-3,5,3,6,7], k 3 输出[3,3,5,5,6,7] 解释 滑动窗口的位置 最大值 --------------- ----- [1 3 -1] -3 5 3 6 7 31 [3 -1 -3] 5 3 6 7 31 3 [-1 -3 5] 3 6 7 51 3 -1 [-3 5 3] 6 7 51 3 -1 -3 [5 3 6] 7 61 3 -1 -3 5 [3 6 7] 7示例 2 输入nums [1], k 1 输出[1]提示 1 nums.length 105-104  nums[i] 1041 k nums.length class Solution {public int[] topKFrequent(int[] nums, int k) {// 统计每个数字出现的频率MapInteger,Integer map new HashMap();for(int i 0; i nums.length; i){map.put(nums[i], map.getOrDefault(nums[i], 0) 1);}// 创建一个大顶堆按照出现频率排序Queueint[] queue new PriorityQueue((m, n) - n[1] - m[1]);// 将每个数字和其频率加入堆中for(Map.EntryInteger,Integer entry : map.entrySet()){queue.add(new int[]{entry.getKey(), entry.getValue()});}// 从堆中弹出前k个高频数字int[] ans new int[k];for(int i 0; i k; i){ans[i] queue.poll()[0];}return ans;} }Java中的队列和栈-CSDN博客

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

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

相关文章

北京做网站比较好的公司兼容ie8的网站模板

文章目录 1 SQLite1.1 世界上最流行的数据库1.1 SQLite简介1.2 插入语句1.3 查询数据1.4 更新数据1.5 删除数据2 DuckDB2.1 DuckDB简介2.2 DuckDB与Python结合使用2.2.1 创建表2.2.2 分析语句2.2.3 导出为parquet文件2.3 Windows中使用DuckDB3 参考附录1 SQLite Python的一个特…

地图商业授权共享 - no

地图商业授权共享 百度、高德、腾讯三大地图商业授权起步都是:5万元/年。 小企业难顶。 有需要的老铁,可以付费共享,好商量。加WX:E2E188

DevOps平台选型指南:数字化转型中的技术决策关键

DevOps平台选型指南:数字化转型中的技术决策关键 在数字化转型浪潮席卷全球的当下,DevOps平台已经从单纯的技术工具演变为企业技术架构的战略性组成部分。随着云计算、微服务架构和持续交付理念的普及,企业面临着如…

window 安全模式卸载任何软件

win+R 命令行 输入msconfig 打开系统配置 切换到引导页签,勾选安全引导后选择重启,重启后即为安全模式 安全模式下找到软件所在的文件目录,暴力删除即可,一次删除不干净,多重启几次删除就好了I have a dream : San…

定制笔记本电脑工厂排名:从基础代工到联合设计全面分析 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

题解:qoj1261 Inv

题意:给出 \(n,k\),求满足 \(p(p(i)) = i\) 且逆序对数等于 \(k\) 的排列数量对 \(2\) 取模。 做法: 对 \(2\) 取模,很神秘的东西,考虑找找性质。 注意到 \(p,p^{-1}\) 逆序对数一样,且满足条件的 \(p\) 满足 \(…

sv 去除字符串行尾空格函数

字符串去除行尾空格 函数 // 去除字符串末尾的换行符和空格符 function string remove_trailing_whitespace(string str);int len = str.len();int last_valid_index = -1;// 空字符串直接返回if (len == 0) return &q…

这么做3d展示网站展示网站欣赏

昨晚帮师姐整理测试,没有时间写日志,今天一大早补上。 十一长假之后的第一个工作日,老师回来了。详细汇报了整个假期的学习之后,老师整理了以后我的学习任务。本来觉得没多少事情,可是细数了一下,竟然光论文…

可以直接进入的网站正能量大豆网怎么用apache做网站

深度学习推理速度优化指南 简介一、显卡频率设置二、查看当前显卡频率三、调整显卡频率范围注意事项总结 简介 本文旨在探讨深度学习推理过程中 CUDA 或 TensorRT 推理速度变慢的问题,并提供实用的解决策略。我们将从显卡频率设置、模型权重优化等方面出发&#xf…

做网站挣钱吗现在wordpress qq登陆评论

Chapter Ⅰ 介绍Ansible ansible ansible是一款开源自动化平台 ansible围绕一种无代理架构构建,在控制节点上安装ansible,且客户端不需要任何特殊的代理软件;ansible使用SSH等标准协议连接受管主机,并在受管主机上运行代码或命令来…

LeetCode 386 字典序排数 Swift 题解:模拟字典翻页的遍历技巧 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

题解:AT_abc214_g [ABC214G] Three Permutations

题意:很简单了,不再赘述。 做法: 直接做很困难,考虑容斥,钦定若干个 \(i=x_i\) 或者 \(i=y_i\),然后如果钦定了 \(k\) 个,那么贡献是 \((n-k)!(-1)^k\)。 但是有个问题,我们不能无脑钦定,这些钦定条件间会有一…

通过velocity将增量发版的代码及文件生成生成一个linux shell文件(解放运维)

pom.xm <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId></dependency> resource/shell/release_cp.sh.vm发版失败回…

从企业级项目到普惠API:我如何将自研的人脸识别引擎打造成「识度AI」

我把做过的人脸识别项目,变成了一个赚钱的副业:识度AI的从0到1实战录 ​ 嘿,朋友们,我是菠菜啊,一个标准的Java后端开发者,日常与SpringBoot和MySQL打交道。和你们一样,我不仅对技术实现着迷,更对如何让技术产…

得帆AI aPaaS 1.0正式发布,低代码+AI关键特性等你探索

自2022年起,得帆开始了对AI战略的持续探索与研究,致力于开发AI相关的产品及其特性。2025年5月15日,在上海中心J酒店举行的得帆AI战略发布会上,得帆正式公布了最新的AI产品演进路线图和Roadmap。 在此次战略发布会上…

【Array】数组:多个值的集合

【Array】数组:多个值的集合在编程中,我们经常需要处理一组相关的数据。数组(Array) 就是用来存储多个值的容器,它让我们能够将相关的数据项组织在一起,进行批量操作和处理。 一、 什么是数组? 数组就像一个多格…

Go基础:文件与文件夹操控详解

Go基础:文件与文件夹操控详解2025-09-28 13:41 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importan…

【代码注释】给脚本加上说明

【代码注释】给脚本加上说明在开始学习变量和编程概念之前,我们先要掌握一个简单但极其重要的技巧——代码注释。注释就像是给代码加的"便签"或"说明书",它们不会影响程序的运行,但能让代码更容…

百度站长工具链接提交怎么运营自己的网站

所谓的大道至简就是说大道理&#xff08;基本原理&#xff0c;方法和规律&#xff09;是极其简单的&#xff0c;简单到一两句话就能说明白。所谓“真传一句话&#xff0c;假传万卷书”。这也许也是这本书只有一百多页的原因吧。 说实话&#xff0c;《大道至简》这部作品对现在有…

帮助向量机深度解析:从数学原理到工程实践的完整指南

帮助向量机深度解析:从数学原理到工程实践的完整指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…