1480. Running Sum of 1d Array
仅供自己学习
思路:
这种简单的题可以有更深层次的讨论。
先给出两种方法的代码:
首先是直接更改nums数组:
1 class Solution { 2 public: 3 vector<int> runningSum(vector<int>& nums) { 4 5 for(int i=1;i<nums.size();++i){ 6 nums[i]+=nums[i-1]; 7 } 8 return nums; 9 } 10 };
再来是新建一个vector数组
1 class Solution { 2 public: 3 vector<int> runningSum(vector<int>& nums) { 4 int dycount=0; 5 vector<int> res; 6 for(auto& a:nums){ 7 dycount+=a; 8 res.push_back(dycount); 9 } 10 return res; 11 } 12 };
那么问题就来了,是否可以更改nums数组呢。两种方法在leetcode都能AC。一般来说如果C++不希望修改传入的数组,那么函数签名 vector<int> runningSum(const vector<int>& nums) 会更合适,但实际生产环境中,这样的函数设计,不改变传来的函数参数是常态。否则,相当于这个函数包含有 side-effect 。如果被老师或者面试官问到这种问题,或许讨论这方面要比给出答案会更加分