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;
    }
};
相关推荐
6Hzlia23 分钟前
【Hot 100 刷题计划】 LeetCode 39. 组合总和 | C++ 回溯算法与 startIndex 剪枝
c++·算法·leetcode
宵时待雨38 分钟前
优选算法专题1:双指针
数据结构·c++·笔记·算法·leetcode
We་ct1 小时前
LeetCode 172. 阶乘后的零:从暴力到最优,拆解解题核心
开发语言·前端·javascript·算法·leetcode·typescript
老虎06271 小时前
LeetCode热题100 刷题笔记(第五天)双指针法 「 三数之和 」
笔记·算法·leetcode
美式请加冰2 小时前
简单多状态问题
数据结构·算法·leetcode
佑白雪乐2 小时前
<LeetCode>二叉树前/中/后/层遍历**递归&&非递归**
算法·leetcode·深度优先
6Hzlia2 小时前
【Hot 100 刷题计划】 LeetCode 279. 完全平方数 | C++ 动态规划 (完全背包)
c++·leetcode·动态规划
木子墨5162 小时前
LeetCode 热题 100 精讲 | 动态规划进阶篇:最大子数组和 · 分割等和子集 · 最长公共子序列 · 打家劫舍 III
数据结构·c++·算法·leetcode·动态规划·力扣
_深海凉_3 小时前
LeetCode热题100- 字母异位词分组
leetcode
洛水水3 小时前
【力扣100题】14.两数相加
c++·算法·leetcode