題目
https://www.lintcode.com/problem/subarray-sum/description?_from=ladder&&fromId=2
實現
- 定義 prefix_sum_hash 用於存放
{ prefix_sum : index }
- 遍歷整個數組,每次計算
prefix_sum[index]
,判斷是否prefix_sum[index]
是否存在於 hash 裏- 如果存在那麼返回
prefix_sum_hash[prefix_sum] - 1, index
- 如果不存在那麼
prefix_sum_hash[prefix_sum] = i
- 如果存在那麼返回
- 最終返回 -1, -1
代碼
class Solution:
"""
@param nums: A list of integers
@return: A list of integers includes the index of the first number and the index of the last number
"""
def subarraySum(self, nums):
if nums is None:
return -1, -1
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