Skip to content

Latest commit

 

History

History
31 lines (27 loc) · 1.13 KB

239.md

File metadata and controls

31 lines (27 loc) · 1.13 KB

LeetCode 239 Sliding Window Maximum——hard

Given an array nums, there is a sliding window of size kwhich is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the sliding window moves right by one position. Return the max sliding window.
Example:
Input: nums = [1,3,-1,-3,5,3,6,7], and k = 3
Output: [3,3,5,5,6,7] 
Explanation: 

Window position                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

Note: 
You may assume k is always valid, 1 ≤ k ≤ input array's size for non-empty array.
Follow up:
Could you solve it in linear time?

idea

思路:双端队列,这样子两端都可以进行O(1)复杂度的操作
头结点保存最大值、有新节点进入的时候,从尾部开始比较,将较小值全部删除,因为我们只要最大的
T:O(n);S:O(n-k)