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;
    }
};
相关推荐
埃伊蟹黄面1 天前
算法 --- hash
数据结构·c++·算法·leetcode
ywwwwwwv1 天前
力扣139
算法·leetcode·职场和发展
黛色正浓1 天前
leetCode-热题100-哈希合集(JavaScript)
javascript·leetcode·哈希算法
smj2302_796826521 天前
解决leetcode第3777题使子字符串变交替的最少删除次数
python·算法·leetcode
Tisfy1 天前
LeetCode 2110.股票平滑下跌阶段的数目:数学(一次遍历)
数学·算法·leetcode·题解
练习时长一年1 天前
LeetCode热题100(搜索插入位置)
数据结构·算法·leetcode
(●—●)橘子……1 天前
记力扣557.反转字符串中的单词 练习理解
算法·leetcode·职场和发展
sprintzer1 天前
12.06-12.15力扣分治法刷题
算法·leetcode
月明长歌1 天前
【码道初阶】【牛客BM30】二叉搜索树与双向链表:java中以引用代指针操作的艺术与陷阱
java·数据结构·算法·leetcode·二叉树·笔试·字节跳动
刃神太酷啦1 天前
Linux 进程核心原理精讲:从体系结构到实战操作(含 fork / 状态 / 优先级)----《Hello Linux!》(6)
java·linux·运维·c语言·c++·算法·leetcode