Skip to content

Latest commit

 

History

History
45 lines (33 loc) · 962 Bytes

滑动窗口的最大值.md

File metadata and controls

45 lines (33 loc) · 962 Bytes

滑动窗口最大值

来源

剑指 Offer: 传送门

双指针类题目通用思路

  1. 确定双指针位置(都在起始位置、一个在起始一个在末尾)
  2. 确定终止条件(双指针重合、high 走到末尾)
  3. while 语句中的条件判断(双指针走向 =>同向走、向中间靠拢)

思路

双指针间距 size,之后同步走,取出动态数组 temp 的最大值,push 进 res

终止条件:high 指针走到末尾

代码

function maxInWindows(num, size) {
  let res = [];
  if (num == null || size < 1) {
    return [];
  }

  let low = 0;
  let high = low + size - 1;

  while (high < num.length) {
    let temp = num.slice(low, high + 1);
    let maxNum = temp.reduce((prev, next) => {
      return Math.max(prev, next);
    });

    res.push(maxNum);
    temp = [];
    low++;
    high++;
  }

  return res;
}