这样写力扣测试超时,好像进入死循环了
思路是先判断左边界,在判断右边界
代码应该能看出来,但是不知道错在哪里
1条回答 默认 最新
- Cin.白术 2024-10-31 10:51关注
在判断右边界时,如果left=3,right=4,nums[3]=5,nums[4]=6,target=5,则mid=3,总是满足nums[mid]==target,所以left=mid=3,和初始状态一致,所以会进入死循环。
修改提示:
1、可以在mid==left时进行特判(此时区间宽度为2,也可将while判断语句改为left<right-1,此时分别判断一下left和right即可找到边界)
2、因为int型总是向下取整的特性,因此可使右缩进时 left==mid+1,这样能保证最终区间必然为1(left==right),但可能需要判断nums[left]==target来确定这是否是边界(如果不相等,则左边界是left+1(右边界是left-1))本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录