题解 | #牛群的位置排序#
牛群的位置排序
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; } }