class Solution {
public int searchInsert(int[] nums, int target) {
int mid,left=0,right=nums.length-1;
while(left<=right){
mid=left+(right-left)/2;
if(nums[mid]<target){
left=mid+1;
}
else if(nums[mid]>target){
right=mid-1;
}
else {
return mid;
}
}
return left;
}
}
很多人在使用二分法的时候,都会使用
mid=left+(right-left)/2;
我看很多博客的解释是因为不管是什么值数据类型,底层都是有字节限制的,所以要是left+right造成位数的溢出。
说实话,没怎么看懂。