只要能保证 一边一定有,或一边一定没有,就可以使用二分法查找,并不要求一定有序。
时间复杂度 O(log n)
获取有序列表中 指定元素首次出现的下标
public class Main {public static void main(String[] args) {}private static int getIndex(int[] nums, int target) {int max = nums.length - 1;int min = 0;int mid = 0;while (max >= min) {// 正整数 N / 2 等价于 N >> 1// 等价于 mid = (min + max) / 2;// 相加运算,容易溢出,右移更安全,更快速mid = min + (max - min) >> 1;if (nums[mid] == target) {while (mid >= 1 && nums[mid] == nums[mid - 1]) {mid--;}return mid;}if (nums[mid] > target) {max = mid - 1;} else {min = mid + 1;}}return -1;}}
