Given an array of positive integers nums and an integer k, return true if nums has a continuous subarray whose sum equals k.
Examples:
nums = [1,2,3,4], k = 6,res = true—[1,2,3]nums = [1,2,3,4], k = 8,res = false—[1,3,4]
这道题考察的是连续子数组的和是否等于目标值 K。由于数组元素都是正整数,可以使用滑动窗口维护一个不断扩张和收缩的区间:先向右累加当前元素,如果窗口和大于 K,就不断从左侧移除元素直到不超过 K;如果某一时刻窗口和正好等于 K,就返回 true。这个方法只需要一次线性遍历,时间复杂度为 O(n),并且额外空间为 O(1)。
正文完