跳至主要內容

大小为k的子数组的最大和


大小为k的子数组的最大和

题目

在给定数组中,求"连续k个元素的子数组"的最大和。

示例1:

输入:[2, 1, 5, 1, 3, 2], k=3
输出:9
解释:子数组[5, 1, 3]的和最大

示例2:

输入:[2, 3, 4, 1, 5], k=2
输出:7
解释:子数组[3, 4]的和最大

解答1:滑动窗口

class MaxSumSubArrayOfSizeK {
  public static int findMaxSumSubArray(int k, int[] arr) {
    int maxSum = 0, windowSum;
    for (int i = 0; i <= arr.length - k; i++) {
      windowSum = 0;
      for (int j = i; j < i + k; j++) {
        windowSum += arr[j];
      }
      maxSum = Math.max(maxSum, windowSum);
    }

    return maxSum;
  }
  
  public static void main(String[] args) {
    System.out.println("Maximum sum of a subarray of size K: "
        + MaxSumSubArrayOfSizeK.findMaxSumSubArray(3, new int[] { 2, 1, 5, 1, 3, 2 }));
    System.out.println("Maximum sum of a subarray of size K: "
        + MaxSumSubArrayOfSizeK.findMaxSumSubArray(2, new int[] { 2, 3, 4, 1, 5 }));
  }
}
上次编辑于:
贡献者: Neil