leetcode Day20 前缀和

67 阅读1分钟

1480. 一维数组的动态和

var runningSum = function(nums) {
    let res=[]
    let sum=0
    for(let i of nums){
        sum=sum+i
        res.push(sum)
    }
    return res
};

1732. 找到最高海拔

var largestAltitude = function(gain) {
    let heights=[0]
    for(let i of gain){
        h=heights[heights.length-1]+i
        heights.push(h)
    }
    return Math.max(...heights)
};

1588. 所有奇数长度子数组的和

var sumOddLengthSubarrays = function(arr) {
    let n=arr.length
    let preSum=new Array(n+1).fill(0)
    for(let i=0;i<n;i++){
        preSum[i+1]=preSum[i]+arr[i]
    }
    let sum=0
    for(let i=0;i<n;i++){
        for(let l=1;l+i<=n;l=l+2){
            const e=i+l-1
            sum+=preSum[e+1]-preSum[i]
        }
    }
    return sum
};

1991. 找到数组的中间位置

var findMiddleIndex = function(nums) {
    const total=nums.reduce((a,b)=>a+b)
    let sum=0
    for(let i =0;i<nums.length;i++){
        if(nums[i]+sum*2===total){
            return i
        }
        sum+=nums[i]
    }
    return -1
};