标签:
题目描述: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