Update 437. Path Sum III.md

This commit is contained in:
唐树森
2018-11-19 11:21:37 +08:00
committed by GitHub
parent 2d2bfce98f
commit ba2704ec6c
+2 -2
View File
@@ -23,8 +23,8 @@
不难发现思路二中的每次for循环包含了大量的重复运算,我们可以考虑用空间换时间的思想去掉这些不必要的重复计算。
大致思想还是同思路二,不过不用out数组记录root到node的所有节点,而是用一个hash表mp记录root到(当前)所有节点的每个路径和的个数,这样的话mp[curSum - sum]
就是满足条件的且以node结束的路径条数。
例如,若root到node的值分别是:1、2、3、-3,则4个从root开始的路径和分别为1、3、6、3,那么此时就有`mp[1] = 1``mp[3]=2``mp[6]=1`
若sum=2,则此时得到的满足条件的且以node结束的路径条数就为`mp[curSum - sum] = mp[3 - 2] = 1`
例如,若root到node的值分别是:1、2、3、-3,则4个从root开始的路径和分别为1、3、6、3,那么此时就有`mp[0] = 1``mp[1] = 1``mp[3]=2``mp[6]=1`
若sum=2,则此时得到的满足条件的且以node结束的路径条数就为`mp[curSum - sum] = mp[3 - 2] = 1`, 这条路径就是“2、3、-3”
此时击败了99%的人,时间复杂度为O(n)
# C++