最近用python刷了200多道leetcode,
二分查找的题目里,我习惯用(left+right)//2,感觉理解起来更直观,
可是看大佬解法,总喜欢用left+(right-left)//2,一直不知道为什么,
今天刷题在评论区看到了解释,
left+right 当left和right都很大的时候,可能会造成越界。
虽然说python3自动转换整数和长整数不需要考虑溢出,这么写有些多余,
可是算法并不局限于某一种语言,而是一种思想,所以以后还是要具备这种思想。
最近用python刷了200多道leetcode,
二分查找的题目里,我习惯用(left+right)//2,感觉理解起来更直观,
可是看大佬解法,总喜欢用left+(right-left)//2,一直不知道为什么,
今天刷题在评论区看到了解释,
left+right 当left和right都很大的时候,可能会造成越界。
虽然说python3自动转换整数和长整数不需要考虑溢出,这么写有些多余,
可是算法并不局限于某一种语言,而是一种思想,所以以后还是要具备这种思想。