diff --git a/437. Path Sum III.md b/437. Path Sum III.md index bff17a6..237994f 100644 --- a/437. Path Sum III.md +++ b/437. Path Sum III.md @@ -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++