滑动窗口内数的和——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;
    }
}
posted @ 2022-02-21 11:43  言思宁  阅读(62)  评论(0编辑  收藏  举报