本文共 995 字,大约阅读时间需要 3 分钟。
二分查找找出元素第一次出现的下标位置若未找到 输出-1-(应该出现的位置)
{1,3,5,8} 找7 则输出-4 找10 则输出-5 找0 则输出-1
package test;public class Test { public static void main(String[] args) { int[] nums={1,3,5,8}; int n= searchInsert(nums, 0); System.out.println(n); } public static int searchInsert(int[] nums, int target) { if (nums == null || nums.length == 0) { return 0; } int start = 0, end = nums.length - 1; while (start + 1 < end) { int mid = start + (end - start) / 2; if (nums[mid] == target) { return mid; } else if (nums[mid] < target) { start = mid; } else { end = mid; } } //第一个 if (target <= nums[start]) { return -(start+1); } //中间 if (target <= nums[end]) { return -(end + 1); } //最后一个 return -(end + 2); } }
转载地址:http://ukkni.baihongyu.com/