news 2026/6/25 1:09:00

Day10 >> 232、用栈实现队列 + 225、用队列实现栈 + 20、有效的括号

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Day10 >> 232、用栈实现队列 + 225、用队列实现栈 + 20、有效的括号

代码随想录-栈

232、用栈实现队列

没有算法逻辑,就是考察对栈这个数据结构的操作,需要多加练习

class MyQueue { Stack<Integer> stackIn; Stack<Integer> stackOut; public MyQueue() { stackIn = new Stack<>(); stackOut = new Stack<>(); } public void push(int x) { stackIn.push(x); } public int pop() { dumpstackIn(); return stackOut.pop(); } public int peek() { dumpstackIn(); int result = stackOut.pop(); stackOut.push(result); return result; } public boolean empty() { if (stackIn.isEmpty() && stackOut.isEmpty()) { return true; }else { return false; } } private void dumpstackIn() { if (!stackOut.isEmpty()) return; while (!stackIn.isEmpty()) { stackOut.push(stackIn.pop()); } } } /** * Your MyQueue object will be instantiated and called as such: * MyQueue obj = new MyQueue(); * obj.push(x); * int param_2 = obj.pop(); * int param_3 = obj.peek(); * boolean param_4 = obj.empty(); */

225、用队列实现栈

这道题也是在考察对栈和队列的掌握情况,要注意队列的操作,不要与栈搞混了,需要多加练习。

class MyStack { Queue<Integer> queue; public MyStack() { queue = new LinkedList<>(); } public void push(int x) { queue.add(x); } public int pop() { revse(); return queue.poll(); } public int top() { revse(); int result = queue.poll(); queue.offer(result); return result; } public boolean empty() { return queue.isEmpty(); } private void revse() { int size = queue.size(); size--; while (size-- > 0) { queue.add(queue.poll()); } } } /** * Your MyStack object will be instantiated and called as such: * MyStack obj = new MyStack(); * obj.push(x); * int param_2 = obj.pop(); * int param_3 = obj.top(); * boolean param_4 = obj.empty(); */

20、有效的括号

这道题主要考察栈的数据结构特性,适用于解决有秩序要求、严格对称的一类匹配问题,重点要考虑清楚所有的不匹配场景,然后去有针对性的写处理代码,这样就很清晰,不容易乱。

class Solution { public boolean isValid(String s) { Stack<Character> st = new Stack<>(); for (char c : s.toCharArray()) { if (c == ')' && !st.isEmpty() && st.peek() == '(') { st.pop(); } else if (c == '}' && !st.isEmpty() && st.peek() == '{') { st.pop(); } else if (c == ']' && !st.isEmpty() && st.peek() == '[') { st.pop(); } else { st.push(c); } } return st.isEmpty(); } }

1047、删除字符串种的所有相邻重复项

这道题留着明天练习下

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 10:19:00

3、深入了解BPF程序类型

深入了解BPF程序类型 1. BPF程序基础与运行特点 大多数BPF程序只有具有root权限的用户才能加载到内核中。当运行一个BPF程序时,即使你没有对计算机进行任何操作,几秒钟后也会开始看到 “Hello, BPF World!” 消息。这是因为计算机后台运行的程序可能正在执行其他程序。 当…

作者头像 李华
网站建设 2026/6/23 5:37:54

4、BPF 技术深入解析:验证器、类型格式、尾调用与映射操作

BPF 技术深入解析:验证器、类型格式、尾调用与映射操作 1. BPF 验证器 在 Linux 内核中允许任意代码执行,乍一听是个糟糕的主意。不过,BPF 验证器的存在大大降低了在生产系统中运行 BPF 程序的风险。内核网络维护者 Dave S. Miller 曾说:“eBPF 程序与毁灭性深渊之间的唯…

作者头像 李华
网站建设 2026/6/23 21:16:14

11、探索 BPF 实用工具:从 BPFTool 到 eBPF Exporter

探索 BPF 实用工具:从 BPFTool 到 eBPF Exporter 1. BPFTool 的批量模式和 BTF 信息显示 BPFTool 的批量模式允许逐行执行命令,若其中一条命令失败,执行将终止,系统会停留在最后一个成功执行命令后的状态。以下是一个批量模式可处理的文件示例: # Create a new hash m…

作者头像 李华
网站建设 2026/6/25 7:17:42

2.5亿参数破局多模态困境:ModernVBERT重塑视觉文档检索技术边界

2.5亿参数破局多模态困境&#xff1a;ModernVBERT重塑视觉文档检索技术边界 【免费下载链接】modernvbert 项目地址: https://ai.gitcode.com/hf_mirrors/ModernVBERT/modernvbert 在人工智能技术迅猛发展的今天&#xff0c;多模态交互已成为行业创新的重要方向&#x…

作者头像 李华
网站建设 2026/6/23 13:51:32

44、FTP安全指南与服务器配置解析

FTP安全指南与服务器配置解析 1. FTP安全原则 FTP存在多种主要威胁模型,具体如下: - 匿名访问威胁 :匿名用户应仅能列出和下载公共文件,可能允许上传文件到指定的“incoming”目录。绝不能让他们将权限提升至更受信任用户的权限。 - 本地用户账户威胁 :本地用户通过…

作者头像 李华