Window Sum
ID: 604; easy
Solution 1 (Java)
public class Solution {
/**
* @param nums: a list of integers.
* @param k: length of window.
* @return: the sum of the element inside the window at each moving.
*/
public int[] winSum(int[] nums, int k) {
if (nums == null || nums.length == 0 || nums.length < k)
return new int[0];
int[] res = new int[nums.length - k + 1];
int windowSum = 0;
for (int i = 0; i < k; i++) {
windowSum += nums[i];
}
for (int i = 0; i + k < nums.length; i++) {
res[i] = windowSum;
windowSum = windowSum - nums[i] + nums[i + k];
}
res[res.length - 1] = windowSum;
return res;
}
}Solution 2 (Java)
Notes
A better refactored version than Solution 1.
Both solutions have the idea of memoization in mind.
Last updated
Was this helpful?