一般看到maximum/longest subarray问题首先想到presum。这道题我们可以将所有的presum缓存起来,然后看看是否当前的presum-k已经存在。trick是presum=0的时候,index=-1。

var maxSubArrayLen = function(nums, k) {
    const len = nums.length;
    if (len === 0) {
        return 0;
    }
    const map = {0: -1};
    let presum = 0;
    let res = 0;
    for (let i = 0; i < len; i++) {
        presum += nums[i];
        const left = map[presum - k];
        if (left !== undefined) {
            res = Math.max(res, i - left);
        }
        if (!(presum in map)) {
            map[presum] = i;
        }
    }
    return res;
};

results matching ""

    No results matching ""