TikTok OA 面试真题解析:连续子数组和等于 K

19次阅读
没有评论

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)。

正文完
 0