描述
給你一個大小為n的整型數組和一個大小為k的滑動窗口,將滑動窗口從頭移到尾,輸出從開始到結束每一個時刻滑動窗口內的數的和。
樣例
對于數組 [1,2,7,8,5] ,滑動窗口大小k= 3 。
1 + 2 + 7 = 10
2 + 7 + 8 = 17
7 + 8 + 5 = 20
返回 [10,17,20]
注意
異常情況要考慮周全
- 數組為空
- 數組元素個數不足k
- 數組不為空但k小于等于0
代碼
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) {
// 3種異常情況
if (nums == null || nums.length < k || k <= 0) {
return new int[0];
}
int[] sum = new int[nums.length - k + 1];
for (int i = 0; i < k; i++) {
sum[0] += nums[i];
}
for (int i = 1; i < sum.length; i++) {
sum[i] = sum[i - 1] + nums[i + k - 1] - nums[i - 1];
}
return sum;
}
}