题解 | #子群的标签和#
子群的标签和
https://www.nowcoder.com/practice/4058a95b317f4f0e87e5a1bfa6db9aad
- 题目考察的知识点 : 哈希表运用
- 题目解答方法的文字分析:
- 使用双指针来寻找符合条件的子数组。具体来说,用两个指针 left 和 right 分别表示子数组的左右边界,初始时,left 和 right 都指向数组的第一个元素。然后将右指针 right 不断向右移动,并累加对应元素的值,直到子数组的和等于 k 或者 right 指针移动到数组的末尾。
- 如果当前子数组的和等于 k,则将该子数组加入答案集合中;否则,将左指针 left 向右移动一位,并更新子数组的和。
- 本题解析所用的编程语言: Python
- 完整且正确的编程代码
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param nums int整型一维数组
# @param k int整型
# @return int整型二维数组
#
class Solution:
def subarraySum(self, nums: List[int], k: int) -> List[List[int]]:
res = []
res_set = set()
n = len(nums)
for left in range(n):
window_sum = 0
for right in range(left, n):
window_sum += nums[right]
if window_sum == k:
subarray = nums[left:right + 1]
res_tuple = tuple(subarray)
if res_tuple not in res_set:
res_set.add(res_tuple)
res.append(subarray)
elif window_sum > k:
break
return res
牛客高频top202题解系列 文章被收录于专栏
记录刷牛客高频202题的解法思路