public IColumn pollColumn() { IColumn column = blockColumns.poll(); if (column == null) { try { if (getNextBlock()) column = blockColumns.poll(); } catch (IOException e) { throw new RuntimeException(e); } } return column; }
public TreeNode buildTree(Deque<String> deque) { String cur = deque.poll(); if (cur.equals(Null)) return null; TreeNode root = new TreeNode(Integer.parseInt(cur)); root.left = buildTree(deque); root.right = buildTree(deque); return root; }
public int[] maxSlidingWindow(int[] nums, int k) { int n = nums.length; if (n == 0) return new int[0]; PriorityQueue<Integer> pq = new PriorityQueue<>(k, Collections.reverseOrder()); Deque<Integer> queue = new ArrayDeque<>(); for (int i = 0; i < k; ++i) { add(pq, queue, nums[i]); } if (n == k) return new int[] {pq.poll().intValue()}; int[] max = new int[n - k + 1]; int idx = 0; for (int i = k; i < n; ++i) { max[idx++] = pq.peek().intValue(); pq.remove(queue.poll()); add(pq, queue, nums[i]); } max[idx] = pq.peek().intValue(); return max; }
public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> ret = new ArrayList<>(); if (root != null) { Deque<TreeNode> queue = new ArrayDeque<>(); queue.offer(root); while (!queue.isEmpty()) { List<Integer> row = new ArrayList<>(); int levelcount = queue.size(); for (int i = 0; i < levelcount; i++) { TreeNode tn = queue.poll(); if (tn.left != null) { queue.offer(tn.left); } if (tn.right != null) { queue.offer(tn.right); } row.add(tn.val); } ret.add(row); } } return ret; }
public int[] maxSlidingWindow(int[] nums, int k) { if (nums == null || k <= 0) return new int[0]; Deque<Integer> deque = new ArrayDeque<Integer>(); int n = nums.length; int[] r = new int[n - k + 1]; int ri = 0; for (int i = 0; i < n; i++) { while (!deque.isEmpty() && deque.peek() < i - k + 1) { deque.poll(); } while (!deque.isEmpty() && nums[i] > nums[deque.peekLast()]) { deque.pollLast(); } deque.offer(i); if (i >= k - 1) r[ri++] = nums[deque.peek()]; } return r; }