题解 | #牛群的位置排序#
牛群的位置排序
https://www.nowcoder.com/practice/87c81fa27b9a45c49ed56650dfa6f51b
反常但是巨好用的一种二分的写法!
不再直接找目标索引,而是找分界线。
不再考虑left < right还是left <= right ,以及不用考虑left = mid + 1 还是left = mid
可以看这个视频
import java.util.*;
public class Solution {
public int searchInsert (int[] labels, int target) {
int left = -1;
int right = labels.length;
int mid = -1;
// 找到 >= target 的分界线
while(left + 1 != right){
mid = left + (right - left) / 2;
if(labels[mid] >= target){
right = mid;
}else{
left = mid;
}
}
// 此时 right 就是第一个 >= target 的目标
return right;
}
}

查看20道真题和解析
