滑动窗口最大值
题目如下
代码如下
public class Solution
{
public int[] MaxSlidingWindow(int[] nums, int k)
{
int len=nums.Length;
if(len==0)
return nums;
int[] max=new int [len-k+1];
MyCircularDeque que=new MyCircularDeque(len);
for(int i=0;i<len;i++)
{
while(que.IsEmpty()==false && nums[que.GetRear()] <= nums[i])
{
que.DeleteLast();
}
que.InsertLast(i);
if (que.GetFront() <= i - k)
{
que.DeleteFront();
}
if (i + 1 >= k)
{
max[i + 1 - k] = nums[que.GetFront()];
}
}
return max;
}}
利用循环双端队列来实现本次操作,关于循环队列代码的编写在博文中有,不在此重复展示。