时间复杂度(O( k*n))
class Solution {
public:
vector<int> maxSlidingWindow(vector<int>& nums, int k) {
vector<int> vec;
for(int i=k-1;i<nums.size();++i){
int max=nums[i];
for(int j=i-k+1;j<i;++j)
if(max<nums[j])max=nums[j];
vec.push_back(max);
}
return vec;
}
};
时间复杂度(O( n))
class Solution {
public:
vector<int> maxSlidingWindow(vector<int>& nums, int k) {
vector<int> vec;
deque<int> deq;
for(int j=0;j<nums.size();++j){
while(!deq.empty()&&nums[deq.back()]<nums[j]) deq.pop_back();
if(!deq.empty()&&deq.front()<=j-k) deq.pop_front();
if(deq.empty()||nums[deq.back()]>=nums[j]) deq.push_back(j);
if(j>=k-1) vec.push_back(nums[deq.front()]);
}
return vec;
}
};