
队列
圆滚滚的柴柴
这个作者很懒,什么都没留下…
展开
-
牛客 剑指offer:滑动窗口最大值
题目:滑动窗口最大值思路:双端队列。队列的两端均可以删除元素。我们需要确保队列中的元素是递减的,这样每次可以从队列头部拿到滑动窗口的最大值。同时,随着窗口的移动,我们需要在队列里删除不在窗口的元素,因此,在队列里,我们保存的是元素的下标。遍历数组中的元素,重复以下过程:从队列尾部删除比当前元素小的所有元素;当前元素入队列;如果队列头部元素不在窗口内,删除它(队列中存的是索引);如果滑动窗口已经形成,把队头元素加入结果集。代码:import java.util.*;public c原创 2021-04-20 18:04:13 · 106 阅读 · 0 评论 -
牛客 剑指offer:输出二叉树的右视图
题目:输出二叉树的右视图思路:递归简历二叉树,然后借助队列广搜,找到每层最右的节点。代码:import java.util.*;class TreeNode { int val; TreeNode left; TreeNode right; public TreeNode (int v) { this.val = v; this.left = null; this.right = null; }}publ原创 2021-04-13 19:09:14 · 196 阅读 · 0 评论 -
牛客 剑指offer:二叉树的之字形遍历
题目:二叉树的之字形遍历思路:借助队列。队列实现层序遍历,然后反转奇数行。代码:import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param root TreeNode类 * @原创 2021-03-18 16:09:27 · 121 阅读 · 0 评论 -
牛客 剑指offer:两个栈实现队列
题目:两个栈实现队列思路:入队列统一压到1栈;出队列时,借助2栈:1栈元素依次出栈压入2栈,此时,2栈栈顶元素是队列需要出队的元素,将其弹出,最后再把2栈元素依次出栈压回1栈,返回弹出的元素。代码:import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Sta原创 2021-03-10 10:23:23 · 103 阅读 · 0 评论 -
牛客 剑指offer:合并k个排序链表
题目:合并k个排序链表思路:优先队列。优先队列允许我们对自定义数据类型排序。声明优先队列时,传入Comparator。代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * }原创 2021-03-09 15:10:50 · 89 阅读 · 0 评论 -
牛客 剑指offer:判断二叉树是否对称
题目:判断二叉树是否对称思路:递归:递归函数返回的是,是否对称。迭代:借助队列。代码,递归:import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param root TreeNode类原创 2021-03-03 15:25:47 · 103 阅读 · 1 评论 -
leetcode Java二刷:23. 合并K个升序链表
题目:23. 合并K个升序链表思路:优先队列。 我们把所有的节点放到优先队列里,重写Comparator方法,按照节点的值排序,这样队列里的节点都是有序的,然后我们按照顺序串起来所有节点即可。代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val)原创 2021-01-13 18:58:13 · 139 阅读 · 0 评论