菜鸡的LeetCode打怪记录
tips:本文涉及的一切内容仅本人学习使用,如不慎发生侵权行为,请滴滴我删除,谢谢(#··)❤
题目1480. Running Sum of 1d Array
思路
1.拿到手后的思路:创建数组a[ ],利用循环实现num[ ]数组的累加;
2.官方思路:直接更新原数组的值,在原数组的基础上实现
代码
1.JAVA
class Solution {
public int[] runningSum(int[] nums) {
int[] a=new int[nums.length];//创建一个数组记录答案
a[0]=nums[0];//第一个元素不参加累加运算
for(int i=1;i<nums.length;i++){
a[i]=nums[i]+a[i-1];
}
return a;
}
}
2.C
int* runningSum(int* nums, int numsSize, int* returnSize){
*returnSize = numsSize;//不加这行代码有bug
//直接不用更改nums[0]
for(int i=1;i<numsSize;i++){
nums[i]=nums[i]+nums[i-1];
}
return nums;
}
评分结果
遇到的问题
此处输出为空,因为返回的数组并没有被赋值长度。
总结
提示:这里对文章进行总结:
可以看出使用原地修改的方式进行操作的时候,占用的内存明显变小。
*returnSize = numsSize;
这一行代码的存在刚开始非常不理解,后来通过bug发现具有必要性,但其实就是需要对return的数组的长度进行限定,尝试了下面的代码,输出结果相同。但是*returnSize = numsSize;具有其动态意义,可以根据输入的数组长度直接生成return的长度。
*returnSize = 4;
参考学习了blog:妙语趣说 - Leetcode中的returnColumnsizes为何物?