过年自律第十天

103 阅读1分钟

如果不小心网友来到了这里请网友自动飘走,浪费你们时间表示歉意。该系列博客的目的是:想自己作为自律工具趁着过年没事每天刷几道题作为打卡督促的功能,没有什么可参考学习的东西,也不是刷博客量充大佬的目的

2021放假第十天,2月15日

滑动窗口

题号:209
var minSubArrayLen = function (target, nums) {
    //初始情况minLen很大然后步步紧缩到最小值,还要判断无值的情况
    let minLen = nums.length + 1, left = 0, right = 0, sum = 0
    while (right < nums.length) {
        sum += nums[right]
        while (sum >= target) {
            //满足条件
            //找到一个长度
            minLen = Math.min(minLen, right - left + 1)
            sum -= nums[left]
            left++
        }
        right++
    }
    return minLen == nums.length + 1 ? 0 : minLen
};
题号:424
var characterReplacement = function (s, k) {
    //map用来记录字母出现频次
    let map = new Map()
    //maxNum map中某个字母出现的最大次数
    let maxLen = 0, maxNum = 0, left = 0, right = 0
    while (right < s.length) {
        let letter = s[right]
        if (map.has(letter)) {
            let num = map.get(letter)
            num++
            map.set(letter, num)
        } else {
            map.set(letter, 1)
        }
        maxNum = Math.max(maxNum, map.get(letter))
        while (right - left + 1 - maxNum > k) {
            let letter = s[left]
            let num = map.get(letter)
            num--
            map.set(letter, num)
            maxNum = Math.max(maxNum, num)
            left++
        }
        //走到这里满足题意的一个集合
        maxLen = right - left + 1
        right++
    }
    return maxLen
};