Problem 239: Sliding Window Maximum
思路
public class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
if (nums == null || nums.length == 0) {
return new int[] {};
}
int len = nums.length, index = 0;
int[] rst = new int[len - k + 1];
Deque<Integer> dq = new ArrayDeque<Integer>();
for (int i = 0; i < nums.length; i++) {
if (!dq.isEmpty() && dq.peek() < i - k + 1) {
dq.poll();
}
while (!dq.isEmpty() && nums[i] > nums[dq.peekLast()) {
dq.pollLast();
}
dq.offer(i);
if (i - k + 1 >= 0) {
rst[index++] = nums[dq.peek()];
}
}
return rst;
}
}易错点
PreviousProblem 340: Longest Substring with At Most K Distinct CharactersNextProblem 187: Repeated DNA Sequences
Last updated