leetCode-Record icon indicating copy to clipboard operation
leetCode-Record copied to clipboard

面试题59 - I. 滑动窗口的最大值

Open fireairforce opened this issue 5 years ago • 0 comments

这题要维护一个类似于双端队列的数据结构,用js的数组就可以模拟了。 这个队列里面存的是数组大小由大到小的元素的下标

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number[]}
 */
var maxSlidingWindow = function(nums, k) {
   if(!nums || nums.length < 2) {
       return nums;
   }
   let list = [];
   let result = Array(nums.length - k + 1).fill(0)
   for(let i = 0;i<nums.length;i++) {    
       while(list.length && nums[list[list.length - 1]] <= nums[i]) {
           list.pop()
       }
       list.push(i);
       if(list[0] <= i-k) {
           list.shift()
       }  
       if (i - k + 1 >= 0) {
           result[i-k+1] = nums[list[0]]
       } 
   }
   return result;
};

fireairforce avatar Feb 26 '20 16:02 fireairforce