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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

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