news 2026/10/1 8:12:44

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/9/30 16:48:30

10、BPF 工具使用指南与技巧

BPF 工具使用指南与技巧 1. BPF 程序信息收集 在处理 BPF 相关的程序时,我们可以通过一系列操作来收集和分析程序信息。首先,需要声明一个计数器来存储程序信息。这里以程序名作为键,对应的值为计数器。 Declare a counter to store our program information. We use the…

作者头像 李华
网站建设 2026/10/1 7:07:34

43、保障Web与文件服务安全:技术、挑战与应对策略

保障Web与文件服务安全:技术、挑战与应对策略 在当今数字化时代,网络安全对于Web应用和文件服务至关重要。以下将详细介绍Web应用安全、文件上传安全、新的Web服务标准以及文件服务安全等方面的内容。 Web应用安全技术 SSL加密技术 SSL(Secure Sockets Layer)用于加密W…

作者头像 李华
网站建设 2026/9/30 19:51:20

47、安全文件服务配置指南

安全文件服务配置指南 1. vsftpd运行模式选择 在配置vsftpd之前,需要决定将其作为独立守护进程运行,还是通过“超级服务器”(inetd或xinetd)运行。早期版本的vsftpd开发者Chris Evans曾因xinetd的日志记录和访问控制功能,推荐将vsftpd与xinetd配合使用。但从1.2版本及以…

作者头像 李华
网站建设 2026/10/1 10:49:58

49、Linux文件共享与日志管理全解析

Linux文件共享与日志管理全解析 一、rsync服务使用详解 在文件共享方面,rsync 是一个非常实用的工具,它可以用于设置匿名和认证的文件同步服务。要了解完整的命令行和配置文件选项,可以查看 rsync(8) 和 rsyncd.conf(5) 的手册页。 (一)使用 rsync 连接到 rsync 服务器…

作者头像 李华
网站建设 2026/10/1 2:53:18

52、系统日志管理与监控全解析

系统日志管理与监控全解析 1. Syslog-ng 的 sync( ) 选项 在 Syslog-ng 中, sync( ) 选项用于限制日志文件同步的频率。它类似于 syslog 的 “-” 前缀,但更加精细。“-” 前缀只是关闭同步,而 file( ) 接受一个数值,可根据需要延迟同步,缓存任意数量的消息。 该数…

作者头像 李华
网站建设 2026/9/30 11:44:25

54、系统日志管理、监控与入侵检测技术详解

系统日志管理、监控与入侵检测技术详解 1. 使用 Swatch 进行自动化日志监控 若要使用 Swatch 监控多个文件,需多次运行 Swatch,每次至少指定不同的跟踪目标(-t 值),可能还需不同的配置文件。更多启动选项可参考 swatch(1) 手册页。 2. 微调 Swatch Swatch 配置并运行后…

作者头像 李华