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;
 }
Esempio n. 2
0
 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;
  }