子数组之和为零:
"""
问题描述:
给定一个整数数组,找到和为零的子数组,返回满足要求的子数组起始位置和结束位置。
问题示例:
给出[-3, 1, 2, -3, 4],返回[0, 2]或者[1, 3],至少有一个子数组之和为零。
"""
class Solution:
def subarraySum(self, nums):
prefix_hash = {0: -1}
prefix_sum = 0
for i, num in enumerate(nums):
prefix_sum += num
if prefix_sum in prefix_hash:
return prefix_hash[prefix_sum] + 1, i
prefix_hash[prefix_sum] = i
return -1, -1
if __name__ == '__main__':
nums = [-3, 1, 2, -3, 4]
solution = Solution()
print("初始化的数组是:", nums)
print("和为零的子数组是:", solution.subarraySum(nums))
"""
运行结果:
初始化的数组是: [-3, 1, 2, -3, 4]
和为零的子数组是: (0, 2)
"""