给你一一个数组nums 。数组「动态和」的计算公式为: runningSum[i] = sum (nums [0... nums[i])。
请返回nums的动态和。
示例1:
输入: nums = [1,2,3,4]
输出: [1,3,6,10]
解释:动态和计算过程为[1, 1+2, 1+2+3, 1+2+3+4] 。
示例2:
输入: nums = [1,1,1,1,1]
输出: [1,2,3,4,5]
解释:动态和计算过程为[1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1] 。
示例3:
输入: nums = [3,1,2,10,1]
输出: [3,4,6,16,17]
int* runningSum(int* nums, int numsSize, int* returnSize) {
*returnSize = numsSize;
//不加这句就只输出“[]”
//返回值是个指针,但是返回去之后读多大的内存不确定,就是数组可能返回1个元素,也可能返回100个元素,这个需要告诉系统。
for (int i = 1; i < numsSize; i++) { //i从1开始,因为nums[0]等于他本身,所以直接从nums[1]
//开始,nums[1]=nums[1]+nums[0]
nums[i] += nums[i - 1]; //输出的第N项是原数组前N项和,此代码是原地修改,第N-1项已是前
//N-1项和,所以第N项只需修改后数组的第N-1项 + 第N项。
}
return nums;
}
//原地修改
重点
*returnSize = numsSize;
//不加这句就只输出“[]”
//返回值是个指针,但是返回去之后读多大的内存不确定,就是数组可能返回1个元素,也可能返回100个元素,需要告诉系统返回多大内存。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)