难度:简单
题目描述:
给你一个数组 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]
解题思路:
方法一:
1.定义一个int型sum来计算原nums数组对应位置的和
2.定义一个int型数组res(res数组长度与nums数字长度相同)来保存sum的值
3.返回res数组
方法一:
用res[i-1]来保存nums[]中前i-1个数的和
代码:
方法一:
1 class Solution { 2 public int[] runningSum(int[] nums) { 3 int sum = 0 ; 4 int length = nums.length; 5 int [] res = new int[length]; 6 for(int i = 0;i < length;i++){ 7 sum = sum + nums[i]; 8 res[i] = sum; 9 } 10 return res; 11 } 12 }
方法二:
1 class Solution { 2 public int[] runningSum(int[] nums) { 3 int [] res = new int[nums.length]; 4 res[0] = nums[0]; 5 for(int i = 1;i < nums.length;i++){ 6 res[i] = res[i-1] + nums[i]; 7 } 8 return res; 9 } 10 }
补充知识:
数组的初始化:
动态初始化 | 数组类型 [] 数组名称 = new 数组类型 [数组长度]; int [] res = new int [nums.length]; |
动态初始化(分步模式) | 数组类型[] 数组名称 = null; 数组名称 = new 数组类型 [数组长度]; int [] res = null; res = new int [nums.length]; |
静态初始化(简化格式) | 数据类型 数组名称 = {值, 值,…} int res = {1,2,3,4,5}; |
静态初始化(完整格式) | 数据类型 数组名称 = new 数据类型[] {值, 值,…} int res = new int [] {1,2,3,4,5}; |
数组引用传递:
数组属于引用数据类型,那么也一定可以发生引用传递。
范例1:
1 public class ArrayDemo { 2 public static void main(String args[]) { 3 int data[] = null; 4 data = new int[3]; //开辟一个长度为3的数组 5 data[0] = 10; 6 data[1] = 20; 7 data[2] = 30; 8 } 9 }
那么既然说到了引用数据类型了,就一定可以发生引用传递,而现在的引用传递的本质也一定是:
同一块堆内存空间可以被不同的栈内存所指向。
范例2:
1 public class ArrayDemo { 2 public static void main(String args[]) { 3 int data[] = null; 4 data = new int[3]; //开辟一个长度为3的数组 5 data[0] = 10; 6 data[1] = 20; 7 data[2] = 30; 8 } 9 }