前言:
1、LeetCode 里面提交代码和我们平时在 IDE 里面写代码是不太一样的,力扣里面是给你预置好了所有题目要的头函数和主函数的,我们只需要往他给的模板里面填自己的答案就好了。
2、我刷力扣只能目力找 bug ,因为 Debug 要开会员……
3、还是决定无论多简单的题都把总结写一下。
题号1480:一维数组的动态和
题目:
给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。
请返回 nums 的动态和。
约束条件:①1 <= nums.length <= 1000
②-10^6 <= nums[i] <= 10^6
题目原链接点此
下图为示例:

先上本人已提交通过的代码:
class Solution {
public:
vector<int> runningSum(vector<int>& nums) {
int sum=0;//定义临时变量存动态和
vector<int> runningSum_temp;
if(nums.size()<=1||nums.size()>=1000)//题目约束条件
{
runningSum_temp.push_back(0);
}
for(int i=0;i<nums.size();i++)
{
sum=sum+nums[i];//计算这一项与前面所有项的和
runningSum_temp.push_back(sum);//将结果存入vector中
}
return runningSum_temp;//返回
}
};
思路:
1、定义并初始化临时变量sum用于存储求和结果。
2、如示例所示,是计算除了首项以外的第 k 项的值再次组成数组,据题意即 nums[i]=nums[i]+nums[i-1] 。
3、定义的临时变量 sum 就是作为 nums[i] 存储值,最后压入vector中。
这题不难,但是我的答案没有官方的好。
来看看官方答案:
class Solution {
public:
vector<int> runningSum(vector<int>& nums) {
int n = nums.size();
for (int i = 1; i < n; i++) {
nums[i] += nums[i - 1];
}
return nums;
}
};
循环从下标1开始,直接更新 nums[i],比我重新定义一个变量要方便。
不过好像有一个问题,就是当输入数组的大小为 1 的时候会数组越界,因此我觉得将循环限制条件的 “i<n” 改成 “i<=n” 更好,或者在循环前面加上一个特殊判断例如:”if(nums.size()==1) return nums;” 。
最后,引用我搜索 LeetCode 时参考的第一篇入门文章:
有人相爱,有人夜里开车看海,有人 LeetCode 第一题都做不出来。
——LeetCode用户 小金和他自己 from 力扣评论区。