Given an array of n integer, and a moving window(size k), move the window at each iteration from the start of the array, find the sum
of the element inside the window at each moving.
Example
python
For array [1,2,7,8,5]
, moving window size k = 3
.
1 + 2 + 7 = 10
2 + 7 + 8 = 17
7 + 8 + 5 = 20
return [10,17,20]
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) {
// write your code here
if (nums == null || nums.length == 0) {
return nums;
}
if (nums.length < k) {
return null;
}
int[] temp = new int[nums.length + 1];
temp[0] = 0;
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
temp[i + 1] = sum;
}
int[] result = new int[nums.length - k + 1];
for (int i = k; i < temp.length; i++) {
result[i - k] = temp[i] - temp[i - k];
}
return result;
}
}
python
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.
"""
def winSum(self, nums, k):
# write your code here
if nums is None or len(nums) == 0 or k <= 0:
return nums
if len(nums) < k:
return None
result = [0] * (len(nums) - k + 1)
for i in range(k):
result[0] += nums[i]
for i in range(1, len(nums) - k + 1):
result[i] = result[i - 1] - nums[i - 1] + nums[i + k - 1]
return result