Prefix Sum Notes
用途:用来解决sub array sum问题。
构造: prefixSum[i] = nums[0] + nums[1] + ....+nums[i - 1] 1 based
用法: sum(i ~ j) = prefixSum[j + 1] - prefixSum[i], 其中upperbound is inclusive and lowerbound
is exclusive.
FAQ
- 为什么要有prefixSum[0] 因为在求sum(0 ~ j)时,为了保证不越界,index 0对应的是prefixSum[1], 否则根据lowerbound exclusive 特性,会出现prefixSum[-1]的情况。
- 有时候不一定需要构建preSum数组,直接用动态的sum就可以解决问题。比如:
- 和hashtable合用的时候记住初始化(0 , -1),得到的subarray length就是i - get(sum)。如果是求maximum subarray, 第二次出现sum就不更新,让sum离现在的位置远些。如果是求方案数,就需要更新hashtable value。
评论
发表评论