南宁网站推广工具seo关键词推广

张小明 2026/1/9 16:07:31
南宁网站推广工具,seo关键词推广,上海某家具网站建设方案,建设银行 网站设置密码在 Java 中#xff0c;利用两个栈实现队列的核心思路是通过栈的“后进先出”特性模拟队列的“先进先出”特性#xff1a;将一个栈#xff08;stackIn#xff09;作为“入队栈”#xff0c;专门处理入队操作#xff1b;另一个栈#xff08;stackOut#xff09;作为“出队…在 Java 中利用两个栈实现队列的核心思路是通过栈的“后进先出”特性模拟队列的“先进先出”特性将一个栈stackIn作为“入队栈”专门处理入队操作另一个栈stackOut作为“出队栈”专门处理出队/获取队首操作。只有当stackOut为空时才将stackIn的所有元素转移到stackOut从而实现“先进先出”。核心原理入队offer直接将元素压入stackInO(1) 时间复杂度。出队poll若stackOut为空将stackIn中所有元素依次弹出并压入stackOut此时stackOut的栈顶就是队列的队首元素弹出stackOut的栈顶元素即队列的队首元素。获取队首peek逻辑与poll类似但仅获取stackOut的栈顶元素不弹出。判空isEmpty当stackIn和stackOut都为空时队列为空。完整代码实现import java.util.Stack; /** * 用两个栈实现队列 */ public class QueueByTwoStacks { // 入队栈专门处理入队操作 private StackInteger stackIn; // 出队栈专门处理出队/获取队首操作 private StackInteger stackOut; // 初始化 public QueueByTwoStacks() { stackIn new Stack(); stackOut new Stack(); } /** * 入队操作直接压入入队栈 * param x 要入队的元素 */ public void offer(int x) { stackIn.push(x); } /** * 出队操作弹出队首元素 * return 队首元素 * throws RuntimeException 队列为空时抛出异常 */ public int poll() { // 先检查出队栈是否为空为空则转移入队栈的元素 transferIfNeeded(); // 若仍为空说明队列为空 if (stackOut.isEmpty()) { throw new RuntimeException(队列为空无法执行poll操作); } // 弹出出队栈的栈顶队列的队首 return stackOut.pop(); } /** * 获取队首元素不弹出 * return 队首元素 * throws RuntimeException 队列为空时抛出异常 */ public int peek() { // 先检查出队栈是否为空为空则转移入队栈的元素 transferIfNeeded(); // 若仍为空说明队列为空 if (stackOut.isEmpty()) { throw new RuntimeException(队列为空无法执行peek操作); } // 获取出队栈的栈顶队列的队首 return stackOut.peek(); } /** * 判断队列是否为空 * return 空返回true否则返回false */ public boolean isEmpty() { return stackIn.isEmpty() stackOut.isEmpty(); } /** * 辅助方法当出队栈为空时将入队栈的所有元素转移到出队栈 */ private void transferIfNeeded() { if (stackOut.isEmpty()) { while (!stackIn.isEmpty()) { stackOut.push(stackIn.pop()); } } } // 测试示例 public static void main(String[] args) { QueueByTwoStacks queue new QueueByTwoStacks(); // 入队1 - 2 - 3 queue.offer(1); queue.offer(2); queue.offer(3); // 输出队首1 System.out.println(队首元素 queue.peek()); // 出队1 System.out.println(出队元素 queue.poll()); // 输出队首2 System.out.println(队首元素 queue.peek()); // 出队2 System.out.println(出队元素 queue.poll()); // 入队4 queue.offer(4); // 出队3 System.out.println(出队元素 queue.poll()); // 出队4 System.out.println(出队元素 queue.poll()); // 判空true System.out.println(队列是否为空 queue.isEmpty()); } }代码说明栈的选择直接使用 Java 内置的Stack类也可使用Deque接口的LinkedList实现Deque是栈的推荐替代方案Stack是旧版类。核心辅助方法transferIfNeeded()封装了“入队栈转出队栈”的逻辑避免代码冗余仅在stackOut为空时触发转移保证效率。异常处理poll和peek操作时若队列为空则抛出运行时异常符合队列的常规行为。判空逻辑必须同时判断stackIn和stackOut因为可能存在“入队栈有元素但出队栈为空”的中间状态。时间复杂度offer入队O(1)直接压栈。poll/peek出队/获取队首均摊复杂度 O(1)每个元素最多被“压入stackIn→ 弹出stackIn→ 压入stackOut→ 弹出stackOut”四次分摊到每个操作上为 O(1)最坏复杂度 O(n)当stackOut为空时需要转移n个元素n为入队栈的元素数。关键总结双栈实现队列的核心是“分栈职责 按需转移”入队只操作stackIn出队只操作stackOut仅当stackOut为空时才转移元素避免重复转移。与双队列实现栈相比双栈实现队列的均摊时间复杂度更优pop/peek 为均摊 O(1)实际开发中更常用。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站搭建免费模板wordpress视频外部储存

PyMAVLink:构建无人机通信系统的终极Python工具链 【免费下载链接】pymavlink python MAVLink interface and utilities 项目地址: https://gitcode.com/gh_mirrors/py/pymavlink 在当今无人机技术快速发展的时代,PyMAVLink作为一套完整的MAVLink…

张小明 2026/1/9 0:17:47 网站建设

如何学好网站建设筑巢做网站怎么样

开发工具:IDEA、微信小程序 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 前端技术:vue、uniapp 服务端技术:springbootmybatisredis 本系统分微信小程序和管理后台两部分&a…

张小明 2026/1/9 0:17:44 网站建设

深圳有做公司网站天津seo外包团队

抖音批量下载神器:一键获取创作者完整作品库 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 还在为手动保存抖音视频而烦恼吗?每次发现优质创作者,想要完整收藏TA的作品作…

张小明 2026/1/9 0:17:42 网站建设

丰镇市网站二维码生成器支持微信扫码

有人说挖漏洞比上班挣的还多,也有人说靠挖漏洞赚钱得饿死,2025年挖漏洞到底还能不能行?新手如果想挖漏洞又该怎么上手?一篇文章告诉你。 首先先说2025年挖漏洞的前景如何? 众所周知挖漏洞的白帽子是越来越多了&#x…

张小明 2026/1/8 20:58:31 网站建设

怎做不下网站刷枪建设银行个人网上银行登录

目录 引言 1 python 仿真程序 1.1 实验数据导出效果 1.2 实验记录导出效果 1.3 完整程序 2 matlab/simulink 仿真模型 2.1 simulink 建模 2.2 S-Function 函数文件 2.3 参数文件 2.4 绘图文件 引言 本文分享【自动控制入门2A】从零搭建全连续控制系统:基于抗积分饱和PID的输入…

张小明 2026/1/9 2:56:57 网站建设

网站快速排名服务建设企业品牌网站

解决“此扩展程序不再受支持”问题:兼容FLUX.1-dev开发工具链 在AI生成内容(AIGC)工具快速迭代的今天,许多开发者都曾遇到过这样一个令人头疼的问题:昨天还能正常运行的插件,今天一打开却弹出一条刺眼的提示…

张小明 2026/1/9 2:56:56 网站建设