链接:560. 和为 K 的子数组 - 力扣(LeetCode)

1.搞一个新数组sums,记录的是从第一个数到第i个数所有数之和。这样的话两数相减得到的结果就是对应子串和

2.要再节省时间一点就用哈希表存前面的sums的对应值的数字,这样最终只要O(N)

 1 class Solution(object):
 2     def subarraySum(self, nums, k):
 3         """
 4         :type nums: List[int]
 5         :type k: int
 6         :rtype: int
 7         """
 8         length = len(nums)
 9         sums = []
10         sums.append(nums[0])
11         i = 1
12         while i < length:
13             sums.append(nums[i]+sums[i-1])
14             i += 1
15         help_dict = {}
16         i = 0
17         res = 0
18         while i < length:
19             if (sums[i] - k) in help_dict:
20                 res += help_dict[sums[i] - k]
21             if sums[i] == k:
22                 res += 1
23             if(sums[i] in help_dict):
24                 help_dict[sums[i]] += 1
25             else:
26                 help_dict[sums[i]] = 1
27             i += 1
28         return res
29 
30         

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/959035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!