queue
bsbcarter
这个作者很懒,什么都没留下…
展开
-
*LeetCode-Binary Tree Right Side View
应该看出来和level order traversal 一样 第一种方法就是基于这个的 每次展开一层 从最右边开始展开 然后将这一层的第一个放入 即最右边一个 用一个queue维护 public class Solution { public List rightSideView(TreeNode root) { Queue que = new LinkedList原创 2015-09-27 10:10:44 · 239 阅读 · 0 评论 -
*LeetCode-Kth Largest Element in an Array
三种方法 1 排序 2 min heap 3 max heap 我用了3 其实2更直观 只是要想清楚 因为heap是用priority queue实现的 每次只能得到queue head 所以要是min 就要使用k个 记录的是最大的k个 要是max就要使用 n - k + 1个 记录的是最小的几个 再有就是comparator的实现 注意返回值的意义 只要是升序的 那么就返回 int1原创 2015-09-28 03:07:40 · 326 阅读 · 0 评论 -
*LeetCode-Implement Stack using Queues
惯性思维以为也要用两个queue 这个题用一个就可以了 queue可以很方便的翻转顺序,把每个队头的poll出来add到后面就好了 注意queue的实现方式 是用linkedlist class MyStack { // Push element x onto stack private Queue que = new LinkedList(); public原创 2015-09-16 03:14:43 · 238 阅读 · 0 评论 -
*LeetCode-Word Ladder
bfs的思想 每次从队头拿一个词 从词的第一个字母开 vary from a to z 然后判断是否和end相等 相等就返回length 不等就判断这个新造的词是否在词典里 假如在就remove from dict 并且add to queue 每次这个que里存在的是同一个level的 都循环完了再len++ public class Solution { public原创 2015-10-06 03:00:41 · 258 阅读 · 0 评论 -
*LeetCode-Populating Next Right Pointers in Each Node II
和第一题不一样的是不一定是complete tree 直接按level order traversal就好 就是用que 每次弄一行 add下一行 /** * Definition for binary tree with next pointer. * public class TreeLinkNode { * int val; * TreeLinkNode left原创 2015-10-07 03:52:51 · 251 阅读 · 0 评论 -
LeetCode-Merge k Sorted Lists
min heap用priority que实现 注意判断list数组是否为空等 这里的trick是pop一个node之后 不用想记录他是哪个list出来的 因为可以用next指针找到!! public class Solution { public ListNode mergeKLists(ListNode[] lists) { ListNode node = nul原创 2015-10-10 04:49:14 · 286 阅读 · 0 评论