美文网首页
算法-不重复最长子串

算法-不重复最长子串

作者: McDu | 来源:发表于2021-03-23 11:50 被阅读0次
/**
 * 题目:字符串出现的不重复最长长度
 * 整体思路:
 * 用一个滑动窗口装没有重复的字符,枚举字符记录最大值即可
 * 对于遇到重复字符如何收缩窗口大小?
 * 我们可以用 map 维护字符的索引,遇到相同的字符,把左边界移动过去即可
 * 挪动的过程中记录最大长度
 */
var lengthOfLongestSubstring = function (s) {
    let map = new Map();
    let i = -1
    let res = 0
    let n = s.length
    for (let j = 0; j < n; j++) {
        if (map.has(s[j])) {
            i = Math.max(i, map.get(s[j]))
        }
        res = Math.max(res, j - i)
        map.set(s[j], j)
    }
    return res
};
  1. 有一堆整数,把他们尽可能均分
function makeAlmostEqual(arr, part) {
    let orderedArr = arr.sort((a, b) => b - a)

    let res = Array(part).fill(void(0)).map(() => [])

    orderedArr.forEach(val => {
        let minArrIdx = getMinArrIdx(res)
        res[minArrIdx].push(val)
    })

    return res;
}

function getSum(arr) {
    return arr.reduce((sum, v) => sum + v, 0)
}

function getMinArrIdx(arrs) {
    let minIdx = 0;
    arrs.forEach((arr, index) => {
       
        if(getSum(arrs[minIdx]) > getSum(arrs[index])) {
            minIdx = index;
        }
    })
    
    return minIdx;
}
makeAlmostEqual([1, 65, 4, 32, 95, 33, 9, 3], 3)

相关文章

网友评论

      本文标题:算法-不重复最长子串

      本文链接:https://www.haomeiwen.com/subject/uzfthltx.html