classSolution { publicint[] getAverages(int[] nums, int k) { doublesum=0; intm= nums.length; int[] res = newint[m]; intwindowLength=2 * k + 1; if (k >= m) { Arrays.fill(res, -1); return res; }; for (inti=0; i < m; i++) { // before and after if (i < windowLength - 1) { res[i] = -1; sum = nums[i] + sum; continue; } // in between intend= nums[i]; intstart= i - windowLength < 0 ? 0 : nums[i - windowLength]; sum = sum + end - start; if (i >= m - k) { res[i] = -1; } res[i - k] = (int)(sum / (double)windowLength); } return res; } }
classSolution { publicint[] maxSlidingWindow(int[] nums, int k) { intn= nums.length; int[] ans = newint[n - k + 1]; //. index Deque<Integer> pq = newLinkedList(); for (inti=0; i < n; i++) { // before k - 1 // insert while (!pq.isEmpty() && nums[i] > nums[pq.peekLast()]) { pq.pollLast(); } pq.offerLast(i); // delete if (pq.peekFirst() == i - k) pq.pollFirst(); // after k is filled, add local solution to global solution if (i >= k - 1) { ans[i - k + 1] = nums[pq.peek()]; } } return ans; } }