请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

(l + r) / 2转换成l + (r -l)/2

(l + r) / 2转换成l + (r -l)/2 是考虑到l + r相加的时候溢出,那l/2 + r/2不就可以了?

正在回答

1回答

liuyubobobo 2019-11-09 01:30:40

因为计算机的运算是整数除法,所以 (l + r) / 2 和 l / 2 + r / 2 可能不等价。


比如 l = 3, r = 21。 

(l + r) / 2 = (21 + 3) / 2 = 24 / 2 = 12;

l + (r - l) / 2 = 3 + (21 - 3) / 2 = 3 + 18 / 2 = 3 + 9 = 12;

l / 2 + r / 2 = 3 / 2 + 21 / 2 = 1 + 10 = 11


继续加油!:) 

3 回复 有任何疑惑可以回复我~
  • 提问者 Haoming_C #1
    原来这样...666
    回复 有任何疑惑可以回复我~ 2019-11-09 11:42:35
  • 之前在leetcode就遇到这个问题,一直没想明白,原来是这样,感谢老师!
    回复 有任何疑惑可以回复我~ 2020-06-15 12:32:06
  • 波波老师,难道就是因为不等价,所以就不能这样用吗??
    回复 有任何疑惑可以回复我~ 2021-01-25 18:41:34
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信