Subarray Sum
2016, Apr 27
Subarray Sum
@(算法)[算法, Subarray, Hash Table, Presum Array]
这一题怎样用一句话描述?
找出数组的某一个区间之和为0
用到什么算法?什么数据结构?
暴力法(循环),或者用区间和数组+hashmap优化;数组,hashmap
通过这题学到了什么?
首先暴力法一定要会,如果连O(n^2)的算法都想不出来就废了;至于使用数组和数组,没有做过这道题就不一定能想到了,思路是:用一个大区间之和,减去它的子区间之和,如果正好为0就代表剩下的区间之和便是0。用通俗的话说就是,我去年这个时候有1万块钱,今年还是有1万块钱,那么证明我这一年既没有赚钱也没有花钱,收入+支出=零。
拓展思考:如果要求出所有的可行解呢?
可能(已经)遇到的BUG有?
如果用hashmap的方法优化,则要注意,在循环中必须先判断计算出来的区间和是否已经在hashmap里了,否则你把自己加进去,再把自己取出来是不是有点傻呢?……