Algorithm/LeetCode

[LeetCode] Running Sum of 1d Array

정수 배열 nums의 자리수까지의 모든 합의 값을 넣은 배열을 반환하라

Example 1:

Input: nums = [1,2,3,4] Output: [1,3,6,10]

Explanation:

Running sum is obtained as follows: [1, 1+2, 1+2+3, 1+2+3+4].

 

Example 2:

Input: nums = [1,1,1,1,1] Output: [1,2,3,4,5]

Explanation:

Running sum is obtained as follows: [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1].

 

Example 3:

Input: nums = [3,1,2,10,1] Output: [3,4,6,16,17]

import java.util.*;
class Solution {
    public int[] runningSum(int[] nums) {
        ArrayList<Integer> arrayList = new ArrayList<>();
        
        arrayList.add(nums[0]);
        for(int idx = 1; idx < nums.length; idx++) {
            arrayList.add(arrayList.get(idx-1) + nums[idx]);
        }
        
        int[] result = new int[nums.length];
        int size = 0;
        for(int temp : arrayList) {
            result[size++] = temp;
        }
        return result;
    }
}

Runtime: 1 ms, faster than 7.22% of Java online submissions for Running Sum of 1d Array.
Memory Usage: 39.2 MB, less than 46.24% of Java online submissions for Running Sum of 1d Array.

 

class Solution {
    public int[] runningSum(int[] nums) {
        for(int i = 1; i < nums.length; i++) {
            nums[i] = nums[i - 1] + nums[i];
        }
        
        return nums;
    }
}

Runtime: 0 ms, faster than 100.00% of Java online submissions for Running Sum of 1d Array.
Memory Usage: 40.2 MB, less than 5.71% of Java online submissions for Running Sum of 1d Array.

 

class Solution {
    public int[] runningSum(int[] nums) {
        //int temp = 0;
        for(int i = 1; i < nums.length; i++){
            nums[i] = nums[i] + nums[i-1];
        }
        System.gc();
        return nums;
    }
}

Runtime: 1 ms, faster than 7.22% of Java online submissions for Running Sum of 1d Array.
Memory Usage: 38.5 MB, less than 99.57% of Java online submissions for Running Sum of 1d Array.

 

GC를 알아보자