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 。如果被老师或者面试官问到这种问题,或许讨论这方面要比给出答案会更加分

posted @ 2021-03-29 16:45  Mrsdwang  阅读(39)  评论(0编辑  收藏  举报