题解 | #二分查找-I#
二分查找-I
https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b
这道题还是暴露我不少的问题~在参考了排行榜的大佬才解决的
由于边界条件以及查询过程中索引变化的问题导致我一开始需要添加非常多的前置条件才可以通过测试qaq
我一开始在target>nums[mid]的调价下进行的操作是,start = mid; mid = (end+start)/2;反之同理,这导致在某些情况下会陷入死循环,比如样例-1,0,3查询3
所以mid = start+(end-start)/2以及start = mid+1; end = mid-1;可以避免这样的死循环
代码重复性较高是因为参考了大佬们的代码QAQ
int search(int* nums, int numsLen, int target ) { // write code here int start = 0; int end = numsLen-1; if(numsLen==0) { return -1; } while(start<=end) { int mid = (end-start)/2+start; if(nums[mid]>target) { end = mid-1; } else if(nums[mid]<target) { start = mid+1; } else if(nums[mid]==target) { return mid; } } return -1; }