【LeetCode滑动窗口类1】325.Maximum Sum Subarray of Size K(最大子数组和为k) C++
Given an array nums and a target value k, find the maximum length of a subarray that sums to k. If there isn’t one, return 0 instead
Note:
The sum of the entire nums array is guaranteed to fit within the 32-bit signed integer range.
Example 1:
Given nums = [1,-1,5,-2,3],k = 3,
return 4.(because the subarray [1,-1,5,-2] sums to 3 and is the longest
Given nums = [-2,-1,2,1], k = 1,
return 2.(because the subarray [-1,2] sums to 1 and is the longest
Follow Up:
Can you do it in O(n) time?
解题思路
采用哈希表和累加和来做(累加和:累计和的数组 sum,其中 sum[i] 表示 [0, i] 区间的数字之和,那么 [i,j] 区间之和就可以表示为 sum[j]-sum[i-1])
就从题目中给的例子进行分析:
nums: [1, -1, 5, -2, 3], k = 3
sums: