-
2.14
- 秒了
-
1.31
- left⇐right,保证每一个元素(包括剩下的最后一个)都被检查过,从而让
left和right正确错开。 return left:错开后,left永远指向第一个大于等于 target 的位置,这就是插入点
- left⇐right,保证每一个元素(包括剩下的最后一个)都被检查过,从而让
-
11.17
- 蚌埠住了,以为是快速排序,结果就是二分查找logN
- 循环条件应该是left⇐right(不同于快排or快选)因为相等时正好进入循环弹出位置,其他没什么问题
class Solution {
public int searchInsert(int[] nums, int target) {
int left = 0;
int right = nums.length-1;
while(left<=right){
if(nums[(left+right)/2]>target){
right = (left+right)/2-1;
}else if(nums[(left+right)/2]==target){
return (left+right)/2;
}else{
left = (left+right)/2+1;
}
}
return left;
}
}