代码随想录-算法训练营day10【栈与队列01:理论基础、用栈实现队列、用队列实现栈】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客

 第五章 栈与队列part01
● day 1 任务以及具体安排:https://docs.qq.com/doc/DUG9UR2ZUc3BjRUdY  
● day 2 任务以及具体安排:https://docs.qq.com/doc/DUGRwWXNOVEpyaVpG  
● day 3 任务以及具体安排:https://docs.qq.com/doc/DUGdqYWNYeGhlaVR6 
● day 4 任务以及具体安排:https://docs.qq.com/doc/DUFNjYUxYRHRVWklp 
● day 5 周日休息
● day 6 任务以及具体安排:https://docs.qq.com/doc/DUEtFSGdreWRuR2p4 
● day 7 任务以及具体安排:https://docs.qq.com/doc/DUElCb1NyTVpXa0Jj 
● day 8 任务以及具体安排:https://docs.qq.com/doc/DUGdsY2JFaFhDRVZH 
● day 9 任务以及具体安排:https://docs.qq.com/doc/DUHVXSnZNaXpVUHN4 今日任务:
● 理论基础
● 232.用栈实现队列
● 225. 用队列实现栈
理论基础 了解一下 栈与队列的内部实现机智,文中是以C++为例讲解的。 文章讲解:https://programmercarl.com/%E6%A0%88%E4%B8%8E%E9%98%9F%E5%88%97%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html   232.用栈实现队列 大家可以先看视频,了解一下模拟的过程,然后写代码会轻松很多。题目链接/文章讲解/视频讲解:https://programmercarl.com/0232.%E7%94%A8%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97.html   225. 用队列实现栈 可以大家惯性思维,以为还要两个队列来模拟栈,其实只用一个队列就可以模拟栈了。 建议大家掌握一个队列的方法,更简单一些,可以先看视频讲解题目链接/文章讲解/视频讲解:https://programmercarl.com/0225.%E7%94%A8%E9%98%9F%E5%88%97%E5%AE%9E%E7%8E%B0%E6%A0%88.html  

目录

理论基础

1、栈(Stack)

2、队列(Queue)

0232_用栈实现队列

0225_用队列实现栈


理论基础

栈(Stack)和队列(Queue)是两种常见的数据结构,它们在 Java 中都有对应的类和接口,并且都有一些常用的函数或方法。以下是它们的常用函数或方法:

1、栈(Stack)

在 Java 中,栈的常用函数和方法包括:

  1. push(E item): 将元素压入栈顶。
  2. pop(): 弹出栈顶元素并返回。
  3. peek(): 返回栈顶元素但不移除。
  4. empty(): 判断栈是否为空。
  5. search(Object o): 查找指定元素在栈中的位置,从栈顶开始计数,返回距离栈顶最近的位置。

Java 中的栈类是 java.util.Stack,它是 Vector 类的一个子类,使用它可以实现栈的基本功能。

2、队列(Queue)

在 Java 中,队列的常用函数和方法包括:

  1. add(E e)offer(E e): 向队尾添加一个元素。
  2. remove()poll(): 移除并返回队列头部的元素。
  3. element()peek(): 返回队列头部的元素但不移除。
  4. isEmpty(): 判断队列是否为空。
  5. size(): 返回队列中的元素个数。
  6. clear(): 清空队列。

Java 中的队列接口有多个实现类,最常见的是 java.util.LinkedList(链表实现的队列)和 java.util.ArrayDeque(数组实现的队列),它们都实现了 Queue 接口。

需要注意的是,Stack 类和 Vector 类以及它们的方法在 Java 中被认为是不推荐使用的,因为它们的同步操作可能导致性能下降。推荐使用 ArrayDequeLinkedList 作为栈和队列的实现。

0232_用栈实现队列

import java.util.Stack;class MyQueue {Stack<Integer> stackIn;Stack<Integer> stackOut;/*** Initialize your data structure here.*/public MyQueue() {stackIn = new Stack<>();  //负责进栈stackOut = new Stack<>(); //负责出栈}/*** Push element x to the back of queue.*/public void push(int x) {stackIn.push(x);}/*** Removes the element from in front of queue and returns that element.*/public int pop() {dumpstackIn();return stackOut.pop();}/*** Get the front element.*/public int peek() {dumpstackIn();return stackOut.peek();}/*** Returns whether the queue is empty.*/public boolean empty() {return stackIn.isEmpty() && stackOut.isEmpty();}//如果stackOut为空,那么将stackIn中的元素全部放到stackOut中private void dumpstackIn() {if (!stackOut.isEmpty()) return;while (!stackIn.isEmpty()) {stackOut.push(stackIn.pop());}}
}

0225_用队列实现栈

import java.util.LinkedList;
import java.util.Queue;/*** 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();*/
class MyStack225 {Queue<Integer> q;public void MyStack225() {q = new LinkedList<>();}//将元素x压入栈顶。public void push(int x) {q.offer(x);int size = q.size();//q.add(x);while (size > 0) {q.offer(q.poll());size--;}}//移除并返回栈顶元素。public int pop() {return q.poll();}//返回栈顶元素。public int top() {return q.peek();}//如果栈是空的,返回true;否则,返回false。public boolean empty() {return q.isEmpty();}
}

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

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

相关文章

IP定位技术原理详细阐述

IP定位技术原理主要基于IP地址与地理位置之间的关联&#xff0c;通过一系列的技术手段&#xff0c;实现对网络设备的物理位置进行精确或大致的定位。以下是对IP定位技术原理的详细阐述。 首先&#xff0c;我们需要了解IP地址的基本概念。IP地址是互联网协议地址的简称&#xff…

大模型日报|今日必读的10篇大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.谷歌推出新型 Transformer 架构&#xff1a;反馈注意力就是工作记忆 虽然 Transformer 给深度学习带来了革命性的变化&#xff0c;但二次注意复杂性阻碍了其处理无限长输入的能力。 谷歌研究团队提出了一种新型 T…

前端开发攻略---从源码角度分析Vue3的Propy比Vue2的defineproperty到底好在哪里。一篇文章让你彻底弄懂响应式原理。

1、思考 Vue的响应式到底要干什么&#xff1f; 无非就是要知道当你读取对象的时候&#xff0c;要知道它读了。要做一些别的事情无非就是要知道当你修改对象的时候&#xff0c;要知道它改了。要做一些别的事情所以要想一个办法&#xff0c;把读取和修改的动作变成一个函数&#…

xcode c++项目设置运行时参数

在 Xcode 项目中&#xff0c;你可以通过配置 scheme 来指定在运行时传递的参数。以下是在 Xcode 中设置运行时参数的步骤&#xff1a; 打开 Xcode&#xff0c;并打开你的项目。在 Xcode 菜单栏中&#xff0c;选择 "Product" -> "Scheme" -> "E…

每日一练

这题我主要用的思想是:动态规划 1.状态表示&#xff1a;以i位置为结尾的字符串是否可以用字典表示&#xff0c;然后就可以拆分成 j ~ i 为字典中的最后一个单词&#xff0c;此时 0 < j < i (1.有可能全部为字典的一个单词&#xff0c;2.有可能只有一个字母的单词)&#x…

光纤网络的星际旅行:SFP与QSFP光模块的技术演进

&#x1f389;光模块作为完成光电转换的光器件&#xff0c;在光通信网络中必不可少&#xff0c;常见的有千兆/万兆光模块、SFP/SFP/QSFP28光模块等&#xff0c;那你知道这些光模块都是如何分类的吗&#xff1f;另外还有哪些类型&#xff1f;接下来我会在本文详细介绍光模块是如…

平台工程在企业数字化转型中的战略价值

要建设成功、有弹性和面向未来的平台&#xff0c;需要做到这三点&#xff1a;了解需求、预测可能面临的挑战并制定经得起时间考验的解决方案。 了解需求是指理解利益相关者的要求和目标&#xff0c;无论他们是最终用户、开发人员还是平台生态系统中的其他相关方。这包括开展全面…

排序算法。

冒泡排序: 基本&#xff1a; private static void sort(int[] a){for (int i 0; i < a.length-1; i) {for (int j 0; j < a.length-i-1; j) {if (a[j]>a[j1]){swap(a,j,j1);}}}} private static void swap(int[] a,int i,int j){int tempa[i];a[i]a[j];a[j]temp;} …

MathType安装导致的Word粘贴操作出现运行时错误‘53’:文件未找到:MathPage.WLL

MathType安装导致的Word粘贴操作出现运行时错误‘53’&#xff1a;文件未找到&#xff1a;MathPage.WLL 解决方案 1、确定自己电脑的位数&#xff1b; 2、右击MathType桌面图标&#xff0c;点击“打开文件所在位置”&#xff0c;然后找到MathPage.WLL &#xff0c;复制一份进行…

二级综合医院云HIS系统源码,B/S架构,采用JAVA编程,集成相关医保接口

二级医院云HIS系统源码 云HIS系统是一款满足基层医院各类业务需要的健康云产品。该产品能帮助基层医院完成日常各类业务&#xff0c;提供病患预约挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生工作站和护士工作站等一系列常规功能&#xff0c;还能与公卫…

【御控物联】Java JSON结构转换(3):对象To对象——多层属性重组

文章目录 一、JSON结构转换是什么&#xff1f;二、案例之《JSON对象 To JSON对象》三、代码实现四、在线转换工具五、技术资料 一、JSON结构转换是什么&#xff1f; JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换&#xff0c;生成新的JS…

【电控笔记6.2】拉式转换与转移函数

概要 laplace&#xff1a;单输入单输出&#xff0c;线性系统 laplace 传递函数 总结

Spring GA、PRE、SNAPSHOT 版本含义及区别

GA:General Availability: 正式发布的版本&#xff0c;推荐使用&#xff08;主要是稳定&#xff09;&#xff0c;与maven的releases类似&#xff1b; PRE: 预览版,内部测试版。主要是给开发人员和测试人员测试和找BUG用的&#xff0c;不建议使用&#xff1b; SNAPSHOT: 快照…

算法学习系列(四十九):最长上升子序列模型(一)

目录 引言一、最长上升子序列二、怪盗基德的滑翔翼三、登山四、合唱队形五、友好城市六、最大上升子序列和 引言 今天学习的是最长上升子序列模型&#xff0c;这种模型我觉得就是我之前说过的就是相当于记忆的过程&#xff0c;记住遇到这种题是用这种模型&#xff0c;下次遇见…

打开电脑底部导航栏的任务

from pywinauto import Application app Application("uia").connect(path"explorer") app["任务栏"].print_control_identifiers() task app["任务栏"].child_window(title"酷狗音乐", auto_id"D:\soft\kugou\KGMus…

Proxmox VE 实现批量增加多网络

前言 实现批量创建多网络&#xff0c;更改主机名称&#xff0c;hosts解析 初始化网卡&#xff0c;主机名称&#xff0c;hosts解析&#xff0c;重启网卡 我的主机六个网卡&#xff0c;使用的有四个网卡&#xff0c;以下一键创建和初始化主机名称我是以硬件的SN号最为主机的名…

Matlab调C/C++简单模板例子

如果你是需要快速搭建一个matlab调c/c环境&#xff0c;这篇文章可以参考 有了c代码&#xff0c;想在matlab里面调用&#xff0c;可以参考我这个模板 matlab调用代码&#xff1a; clear all close all clcinput1 1; input2 2;[output1,output2] mexfunction(input1,input2);…

普通人做抖音小店真的能赚钱吗?可以,但更取决于个人

大家好&#xff0c;我是电商花花。 现在做抖音小店的基本上都是一些新商家&#xff0c;对于我们众多零基础的朋友来说&#xff0c;是期待也是一份挑战。 抖音小店作为一个充满机会的新兴平台&#xff0c;许多人都欣喜的投入其中&#xff0c;期望能够借此来改变自己的命运&…

西门子电动阀门

一、西门子电动调节阀 二、西门子电动调节蝶阀 1、阀门 2、执行器

客户资料不翼而飞?企业数据保护攻略

在数字化经济时代&#xff0c;企业的客户资料等同于商业生命线&#xff0c;一旦泄露&#xff0c;后果不堪设想。例如&#xff0c;2017年Equifax的数据泄露事件&#xff0c;造成超过1.4亿用户的个人信息外泄&#xff0c;不仅给用户带来风险&#xff0c;也让公司名誉受损&#xf…