思路
害,说来惭愧,一道hard的题目是暴力做的.
来日再修改代码
class Solution480 {
public double[] medianSlidingWindow(int[] nums, int k) {
int n = nums.length;
double[] res = new double[n - k + 1];
int index = 0;
List<Integer> l = new ArrayList<>();
Queue<Integer> q = new LinkedList<>();
for (int i = 0; i < k; i++) {
q.add(nums[i]);
l.add(nums[i]);
}
for (int i = k; i < n; i++) {
Collections.sort(l);
res[index++] = k % 2 == 0 ? (double) l.get(k / 2) / 2 + (double) l.get(k / 2 - 1) / 2 : l.get(k / 2);
l.remove(q.poll());
l.add(nums[i]);
q.add(nums[i]);
}
Collections.sort(l);
res[index] = k % 2 == 0 ? (double) (l.get(k / 2)) / 2 + (double) (l.get(k / 2 - 1)) / 2 : l.get(k / 2);
return res;
}
}