Leetcode-3427变长子数组求和

依旧前缀和,3427. 变长子数组求和

是一个套路,数组有len个元素,设置一个len+1个元素的数组cnt,cnt[0] = 0,cnt[i+1] = cnt[i]+nums[i],避开了left为0时需要讨论的情况。left = x, right = y,最后结果 = cnt[y+1] - left[x],可以画个图理解下更直观。

C++代码

cpp 复制代码
class Solution {
public:
    int subarraySum(vector<int>& nums) {
        int len =nums.size();
        vector<int> cnt;
        cnt.resize(len+1);
        int ans = 0;
        for(int i = 0; i <len ;i++){
            cnt[i+1] = cnt[i]+nums[i];
        }
        for(int i = 0; i<len;i++){
            ans+=cnt[i+1]-cnt[max(0,i-nums[i])];
        }
        return ans;
    }
};
相关推荐
CoderYanger10 小时前
优选算法-双指针:2.复写零
java·后端·算法·leetcode·职场和发展
Mr.Ja14 小时前
【LeetCode热题100】No.1——两数之和(Java)
java·算法·leetcode
_dindong18 小时前
动规:01背包
数据结构·笔记·学习·算法·leetcode·动态规划·力扣
Asmalin1 天前
【代码随想录day 35】 力扣 416. 分割等和子集
算法·leetcode·职场和发展
我搞slam2 天前
赎金信--leetcode
算法·leetcode
xxxmmc2 天前
Leetcode 100 The Same Tree
算法·leetcode·职场和发展
Asmalin2 天前
【代码随想录day 32】 力扣 509.斐波那契数列
算法·leetcode·职场和发展
海琴烟Sunshine2 天前
leetcode 35.搜索插入的位置 python
python·算法·leetcode
剪一朵云爱着2 天前
力扣2200. 找出数组中的所有 K 近邻下标
算法·leetcode