Window Sum
程序员文章站
2024-03-05 23:57:49
...
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
下一篇: 简单谈谈RxJava和多线程并发