6.滑动窗口算法

82 阅读1分钟

1.滑动窗口算法思想

维护一对左右指针,窗口即为[l,...,r],在一定条件内移动右指针扩大窗口大小,直到窗口内的元素不满足条件时根据情况移动左指针,重复移动左右指针的操作并在区间内求解,直到双指针不能再移动

2.求无重复字符的最大子串长度

function f(str){
  let cache = {}
  let l = r = 0
  let count = 0
  while(r < str.length){
    let char = str[right]
    if( char in cache && cache[char] >= l) l = cache[char] + 1 // 满足字符重复条件为:该字符索引>=l即在滑动窗口内
    count = Math.max(count, r-l+1)
    cache[char] = right++
  }
  return count
}