LeetCode1480 一维数组的动态和

LeetCode1480 一维数组的动态和,第1张

题目

给你一一个数组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个元素,需要告诉系统返回多大内存。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1352930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-14
下一篇 2022-06-14

发表评论

登录后才能评论

评论列表(0条)

保存