LeetCode第239题Sliding Window Maximum
Sliding Window Maximum
Sliding Window Maximum,给定一个数组num
,一个大小为k
的滑动窗口,该窗口从数组的最左边移到最右边,得出窗口内的最大值。
Example:
Input: nums = [1,3,-1,-3,5,3,6,7], and k = 3
Output: [3,3,5,5,6,7]
Explanation:
Max | ||||||||
---|---|---|---|---|---|---|---|---|
[1 | 3 | -1] | -3 | 5 | 3 | 6 | 7 | 3 |
1 | [3 | -1 | -3] | 5 | 3 | 6 | 7 | 3 |
1 | 3 | [-1 | -3 | 5] | 3 | 6 | 7 | 5 |
1 | 3 | -1 | [-3 | 5 | 3] | 6 | 7 | 5 |
1 | 3 | -1 | -3 | [5 | 3 | 6] | 7 | 6 |
1 | 3 | -1 | -3 | 5 | [3 | 6 | 7] | 7 |
这一题和Kth Largest Element in a Stream寻找一个整数流中第K
大的元素非常相似,也可以使用队列来完成。这里使用一个双端队列Deque
,队列中存放当前窗口最大值的数组下标,每当滑动窗口的时候,就记录一次结果。
Solution
下面是Java
的代码:
class Solution { |
下面是Python
的代码:
class Solution: |
总结
第239题是难题,但是使用合适的数据结构和对应的逻辑,就能很好的完成,自带API真香。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WenQian Dong's Web!