LeetCode入门指南 之 栈和队列】的更多相关文章

栈 155. 最小栈 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- 删除栈顶的元素. top() -- 获取栈顶元素. getMin() -- 检索栈中的最小元素. class MinStack { /** initialize your data structure here. */ private Deque<integer> stack; // 额外用一个栈存储最小值 private…
题目: 使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部. pop() -- 从队列首部移除元素. peek() -- 返回队列首部的元素. empty() -- 返回队列是否为空. Implement the following operations of a queue using stacks. push(x) -- Push element x to the back of queue. pop() -- Removes the element from in…
题目链接 https://leetcode-cn.com/problems/implement-queue-using-stacks/ 题目描述 使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部.pop() -- 从队列首部移除元素.peek() -- 返回队列首部的元素.empty() -- 返回队列是否为空. 示例: MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); //…
题目 232.用栈实现队列 class MyQueue { private Stack<Integer> in = new Stack<>(); private Stack<Integer> out = new Stack<>(); public void push(int x) { in.push(x); } public int pop() { in2out(); return out.pop(); } public int peek() { in2ou…
83. 删除排序链表中的重复元素 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 .返回同样按升序排列的结果链表. class Solution { public ListNode deleteDuplicates(ListNode head) { if (head == null) { return head; } //删除重复元素但保留一个的情况下头结点不可能被删除,故不需要哑结点 ListNode cur = head; /**…
二叉树的遍历 递归: void traverse (TreeNode root) { if (root == null) { return null; } //前序遍历位置 traverse(root.left); //中序遍历位置 traverse(root.right); //后序遍历位置 } 144. 二叉树的前序遍历 前序非递归: public static List<Integer> preOrder(TreeNode root) { if (root == null) { retu…
20-有效的括号 思路:主要考察栈的一些基本操作,像push()(将数据压入栈顶).top()(取栈顶的数据但不删除).pop()(直接删除栈顶的元素).empty()(判断栈是否为空).这题就是先把三种括号类型的左边先入栈,然后再判断后面紧接着进入的是否是同类型匹配. class Solution { public: bool isValid(string s) { stack<char> p; for(int i=0;i<s.size();i++){ if(s[i]=='('||s[…
912. 排序数组 给你一个整数数组 nums,请你将该数组升序排列. 归并排序 public class Sort { //归并排序 public static int[] MergeSort(int[] arr) { int[] temp = new int[arr.length]; mergeSort(arr, 0, arr.length - 1, temp); return arr; } private static void mergeSort(int[] arr, int left,…
模板 result = {} void backtrack(选择列表, 路径) { if (满足结束条件) { result.add(路径) return } for 选择 in 选择列表 { 做选择 backtrack(选择列表,路径) 撤销选择 } } 核心就是从选择列表里做一个选择,然后一直递归往下搜索答案,如果遇到路径不通,就返回来撤销这次选择. 推荐阅读:回溯思想团灭排列.组合.子集问题 78. 子集 给你一个整数数组 nums ,数组中的元素 互不相同 .返回该数组所有可能的子集(幂…
推荐学习labuladong大佬的动态规划系列文章:先弄明白什么是动态规划即可,不必一次看完.接着尝试自己做,没有思路了再回过头看相应的文章. 动态规划一般可以由 递归 + 备忘录 一步步转换而来,不必被名字唬住.通常只要找到状态转移方程问题就解决了一大半,至于状态的选择只要题目做多了自然就会形成经验,通常是问什么就设什么为状态. 常见四种类型 Matrix DP (10%) Sequence (40%) Two Sequences DP (40%) Backpack (10%) 注意: 贪心算…