class Solution {
public int searchInsert(int[] nums, int target) {
int l = 0, r = nums.length - 1;
while(l <= r) {
int mid = (l + r) / 2;
if(nums[l] == target) {
return l;
} else if (nums[r] == target) {
return r;
} else {
if(target > nums[mid]) {
l = mid + 1;
} else {
r = mid - 1;
}
}
}
return l;
}
}
一遍过了,但是理解还不是很透,最后的return l纯属运气,return r就会报错。因为int类型除法会舍弃小数部分,l = mid + 1正好使得最后的l会落在这种情况的对应位置上。