目录

  • 前言
  • 正文
    • 队列
    • map集合

前言

算法中经常会用到栈和队列等数据结构
但是经常弄混他们的进与取的代码算法

此文主要是做一个区分度
用法以及注意事项详情可看我之前的文章
【数据结构】栈和队列详细分析(全)

正文

队列

如果使用队列的代码
其定义格式为:

 Queue<TreeNode> queue = new LinkedList<>();

其队列都是先进先出,进与取分为别offer以及poll

示意代码如下:
取每一层的最后一个节点,可以通过使用队列的方式进行存取

class Solution {public List<Integer> rightSideView(TreeNode root) {List<Integer> res = new ArrayList<>();if (root == null) {return res;}Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while (!queue.isEmpty()) {int size = queue.size();for (int i = 0; i < size; i++) {TreeNode node = queue.poll();if (node.left != null) {queue.offer(node.left);}if (node.right != null) {queue.offer(node.right);}if (i == size - 1) {  //将当前层的最后一个节点放入结果列表res.add(node.val);}}}return res;}
}

如果使用栈的代码
其定义格式为:

Deque<TreeNode> stk = new LinkedList<>();

其栈都是先进后出,进与取分为别push以及pop

示意代码如下:
中序遍历使用栈的方式进行存储

class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<Integer>();Deque<TreeNode> stk = new LinkedList<TreeNode>();while (root != null || !stk.isEmpty()) {while (root != null) {stk.push(root);root = root.left;}root = stk.pop();res.add(root.val);root = root.right;}return res;}
}

map集合

map集合中containsKey判断是否有这个key值,get获取key值,put放进key值
最典型的一道leetcode的题目如下:

class Solution {public int[] twoSum(int[] nums, int target) {Map <Integer,Integer>map =new HashMap<>();for(int i=0;i<nums.length;i++){if(map.containsKey(target-nums[i])) return new int[]{map.get(target-nums[i]),i};else map.put(nums[i],i);}return new int[0];}
}

【数据结构】栈与队列区分push pop offer poll containsKey put等相关推荐

  1. 数据结构——栈与队列相关题目

    数据结构--栈与队列相关题目 232. 用栈实现队列 思路 225. 用队列实现栈 1.两个队列实现栈 2.一个队列实现栈 20. 有效的括号 思路 1047. 删除字符串中的所有相邻重复项 思路 1 ...

  2. 数据结构栈和队列_使您的列表更上一层楼:链接列表和队列数据结构

    数据结构栈和队列 When you want to store several elements somewhere in a program, the go-to data type is an a ...

  3. 数据结构栈与队列的应用之汽车轮渡问题——自己的一些理解

    本题摘自王道数据结构栈与队列的应用的课后题,题目如下: 某汽车轮渡口,过江渡船每次能载10辆汽车过江.过江车辆分为客车类和货车类,上渡船有如下规定:同类车先到先上船,客车先于货车上船,且每上4辆客车, ...

  4. 【数据结构-栈和队列】详解栈和队列(代码+STL+原理)

    一.栈的应用 栈是一种先进后出(FILO)的数据结构 1.1 栈的操作实现 清空(clear): // 栈的清空操作就是把栈顶top置为-1 void clear(){top=-1; } // 清空栈 ...

  5. 数据结构/栈实现队列

    前言 在学习数据结构的过程当中,我们会学到栈和队列,在本篇文章中,重点讲解的是栈实现队列,故关于栈和队列的讲解只是简单带过. 一.栈 栈是一种后进先出的线性表,即只能在固定的一端进行插入和删除. 栈 ...

  6. 第十章 基本数据结构——栈和队列

    摘要 本章介绍了几种基本的数据结构,包括栈.队列.链表以及有根树,讨论了使用指针的简单数据结构来表示动态集合.本章的内容对于学过数据结构的人来说,没有什么难处,简单的总结一下. 1.栈和队列 栈和队列 ...

  7. 大话数据结构-栈与队列

    文章知识点来至于大话数据结构里边章节知识, 这篇主要介绍栈与队列在计算机中存储形式, 以及在某些算法领域中对栈和队列的相关应用.章节最后介绍了著名的逆波兰表达式, 以及通过算法来实现该表达式的运算过程 ...

  8. 数据结构——栈与队列操作(用栈模拟队列)

    [栈与队列操作] 问题描述:假设有两个长度相同的栈 S1,S2,已知以下入栈.出栈.判栈满和判栈空操作: void Push(S,x); Elemtype Pop(S); bool StackFull ...

  9. 算法与数据结构 -- 栈与队列(四)

    栈与队列定义了数据的操作 一.栈 栈是一种先入先出的数据结构.可以用顺序表实现,也可以用链表实现 栈操作 判断是否为空 压栈.入栈push 出栈 pop 返回栈顶元素 peek 栈的元素个数 # co ...

最新文章

  1. perl导入文本至mysql_Perl 脚本实现MySQL 异机导入导出-阿里云开发者社区
  2. python中datetime模块_python中的datetime模块
  3. 代码执行-preg_replace
  4. 【目标检测】ICCV21_TOOD: Task-aligned One-stage Object Detection
  5. 偷用计算机作文,偷玩电脑作文500字
  6. 动态代理proxy与CGLib的区别
  7. Dubbo为什么用Go重写?
  8. 机器学习实战——线性回归和局部加权线性回归(含python中复制的四种情形!)
  9. 软件集成测试分析,软件集成测试报告模板
  10. 最新 Hostinger域名转出教程 (2019年6月版本)
  11. 将文件夹压缩成zip文件的php代码、实现批量下载
  12. 复购率/回购率/新购人数
  13. Meta-Weight-Net[NIPS‘2019]:关于元学习/域自适应(meta learning/domain adaptation)优化噪声标签与类别不平衡的问题
  14. python搭建博客系统_Mezzanine 搭建 BLOG 系统
  15. 谷歌地球倾斜模型3Dtiles格式cesium格式一键导入查看
  16. windows 10 超级优化提速 附系统服务列表纯净
  17. 模仿炉石传说的金卡效果
  18. 简单几步解决svchost占用内存过高问题
  19. 冠铭机器人_创新时代 智造引领|众为兴总冠名支持 2019富友会年会圆满落幕
  20. 米家扫地机器人怎么加水_扫地拖地一次就好,米家扫拖机器人1C体验

热门文章

  1. 【UOJ529】【美团杯2020】114514
  2. 吸土城职业技术学校计组撒比课设TEC8硬布线控制器的设计实现
  3. Revit (5) - 二开 -创建墙体
  4. 什么是Node.js?(转)
  5. 图像中圆形识别及基于特征提取形状的matlab实现
  6. Visual Studio2019调试时提示: 应用程序无法正常启动0xc000007b
  7. 对JAVA语言的认识
  8. 御龙在天手游服务器满怎么注册,御龙在天手游背包满了处理方法技巧详解
  9. 为什么要进行需求分析?通常对软件系统有哪些需求?
  10. HTML如何让两个div并排在一行,怎么让两个div并排同行显示