604. 滑动窗口内数的和

描述

给你一个大小为n的整型数组和一个大小为k的滑动窗口,将滑动窗口从头移到尾,输出从开始到结束每一个时刻滑动窗口内的数的和。

样例

对于数组 [1,2,7,8,5] ,滑动窗口大小k= 3 。
1 + 2 + 7 = 10
2 + 7 + 8 = 17
7 + 8 + 5 = 20
返回 [10,17,20]

注意

异常情况要考虑周全

  1. 数组为空
  2. 数组元素个数不足k
  3. 数组不为空但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;
    }
}

你可能感兴趣的:(604. 滑动窗口内数的和)