标签:
题目描述:public class Solution {
public int[] MaxSlidingWindow(int[] nums, int k) {
if(nums.Length == 0){
return new int[0];
}
if(k > nums.Length - 1){
return new int[]{nums.Max()};
}
var result = new List<int>();
var window = new List<int>();
var maxIndex = 0;
for(var i = 0;i < k; i++){
window.Add(nums[i]);
if(nums[maxIndex] < nums[i]){
maxIndex = i;
}
}
result.Add(nums[maxIndex]);
var right = k;
while(right < nums.Length){
window.RemoveAt(0);
window.Add(nums[right]);
if(right - k == maxIndex){
maxIndex = CalcMaxIndex(right-k+1, k, nums);
}else{
if(nums[right] > nums[maxIndex]){
maxIndex = right;
}
}
result.Add(nums[maxIndex]);
right ++;
}
return result.ToArray();
}
private int CalcMaxIndex(int left, int k, int[] nums){
var maxIndex = left ;
for(var j = left ;j < left + k; j++){
if(nums[j] > nums[maxIndex]){
maxIndex = j;
}
}
return maxIndex;
}
}版权声明:本文为博主原创文章,未经博主允许不得转载。
LeetCode -- Sliding Window Maximum
标签:
原文地址:http://blog.csdn.net/lan_liang/article/details/49771149