Fork me on GitHub

03. 滑动窗口

正文

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
fun slidingWindow(nums: IntArray, k: Int): Int {
val n = nums.size
var sum = 0
var maxSum = 0

// 计算第一个窗口的和
for (i in 0 until k) {
sum += nums[i]
}

maxSum = sum

// 滑动窗口
for (i in k until n) {
// 新窗口的和等于之前窗口的和加上新进入窗口的元素,减去滑出窗口的元素
sum += nums[i] - nums[i - k]
// 更新最大和
maxSum = maxOf(maxSum, sum)
}

return maxSum
}
,