首页 > 编程语言 > 详细

5.27——560. 和为K的子数组

时间:2020-05-27 17:22:27      阅读:31      评论:0      收藏:0      [点我收藏+]

560. 和为K的子数组

给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。

示例 1 :
输入:nums = [1,1,1], k = 2
输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。

 

1.解题思路

假设有一个数组 N,且 N[i..j] 的和为 K。然后设置一个辅助数组 S,S[n] 表示 N[0] 到 N[n] 的和。

那么可以得到:S[j] - S[i - 1] = K 经过移项后:S[i - 1] =S[j] - K

对于 S[i - 1],有 n 个前缀和为 S[i - 1] 的位置,就有 n 个以 S[j] 为结尾的和为 K 的子数组(这一点就是前缀和思想的核心,比较不好理解。第一次接触这个思想需要多看几遍)

 

2.源码

技术分享图片

5.27——560. 和为K的子数组

原文:https://www.cnblogs.com/xiaoqichaoren/p/12974442.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!