滑动窗口内数的和——lintcode604
滑动串口求和
题目:滑动窗口内数的和
给你一个大小为n的整型数组和一个大小为k的滑动窗口,将滑动窗口从头移到尾,输出从开始到结束每一个时刻滑动窗口内的数的和。
示例:
输入:array = [1,2,7,8,5], k = 3
输出:[10,17,20]
解析:
1 + 2 + 7 = 10
2 + 7 + 8 = 17
7 + 8 + 5 = 20
题解:双指针
class Solution {
public int[] winSum(int[] nums, int k) {
if(nums.length==0 || nums.length-k+1<=0) return new int[0];
int res[]=new int[nums.length-k+1];
int i=0, j=0, sum=0;
for(i=0; i<nums.length-k+1; i++) {
while (j<nums.length && j-i<k) {
sum+=nums[j];
j++;
}
if(j-i == k) {
res[i]=sum;
}
sum-=nums[i];
}
return res;
}
}