
题目:给定一个二叉树,找出其最大深度。 语言:Golang
解法①:
// 16ms, beat 12.46% func maxDepth(root *TreeNode) int { if root == nil { return 0 } leftDepth := maxDepth(root.Left) rightDepth := maxDepth(root.Right) if leftDepth > rightDepth { return leftDepth + 1 } else { return rightDepth + 1 } } 解法②:
// 8ms, beat 100% func maxDepth(root *TreeNode) int { if root != nil { leftDepth := maxDepth(root.Left) rightDepth := maxDepth(root.Right) if leftDepth > rightDepth { return 1+leftDepth } return 1+rightDepth } return 0 } 实际提交到 leetcode 上,前者耗时 16ms,后者耗时 8ms。
初学 Golang,请问这两段代码为什么执行时间会差两倍?
2 notreami Dec 8, 2018 第一个解法,我这边运行是 8ms 做第一个题的时候,就发现同样的代码,执行结果耗时有差异,猜测可能是 gc,或者资源排队等问题。 |
3 lhx2008 Dec 8, 2018 via Android leetcode 的隔离很差,波动大也很正常 |
5 kaitian521 Dec 8, 2018 c |
6 kaitian521 Dec 8, 2018 试一下 maxDepth(root.Left)>maxDepth(root.Right)? 1+maxDepth(root.Left): 1+maxDepth(root.Right); |
7 msg7086 Dec 8, 2018 你自己拿个秒表,掐两次,然后想想为什么其中一次会是另一次时间的两三倍,就知道原因了。 |
8 QK8wAUi0yXBY1pT7 Dec 8, 2018 你自己同一个解法不同时间再提交,也可能差两倍 |
10 onepunch Dec 8, 2018 运行一万次的时间 / 10000 是每次运行的时间 [手动狗头] |
11 zzj0311 Dec 8, 2018 via Android leetcode 时间并不能作为性能测试的依据,特别是几个 ms 的那种 |
12 gqw121314 Dec 8, 2018 我相同的代码重复提交了 3 次,每次时间都不一样。。。 |
13 akira Dec 8, 2018 以 ms 为单位的性能统计,±50ms 很正常的 |
14 bubuhere Dec 8, 2018 via iPhone leetcode 给出的时间没有太大参考性 |