节点求和的值和老师的结果不同,请老师查看
来源:1-3 创建线段树
PHP微信小程序开发
2021-12-30 19:00:53
老师的测试用例:
老师的打印结果:
我用的测试用例和老师一样
我的打印结果:
前面五个元素的值我都没有疑问,但是从第六个元素开始,我就困惑了,不知道是不是老师大意弄错了,还是我理解错误
ps:以本节老师的测试用例创建的线段树是应该如下图吧?老师帮我看看是否正确
1回答
课程代码第六个值是 -3 的原因是,-3 = -5 + 2。
因为[-5, 2, -1] 这个节点的 l 是 3,r = 5,所以 mid = (l + r) / 2 = (3 + 5) / 2 = 4。按照 [l, mid] 和 [mid + r] 去划分,划分的两个节点的所以是 [3, 4] 和 [5],对应的值是 [-5, 2] 和 [-1],而非 [-5] 和 [2, -1]。
注意,这是和 [-2, 0, 3] 的划分不同的。课程代码逻辑的划分,对于奇数个数元素的区间,不一定是左边元素比右边元素少,而是根据 l 的奇偶性来判断的。(即 (l + r) / 2 到底是多少。)
继续加油!:)
相似问题