题目
代码
package array;
import java.util.ArrayList;
import java.util.Scanner;
public class SearchInsert {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
String[] split = s.substring(1, s.length() - 1).split(",");
int[] nums = new int[split.length];
for (int i = 0; i < nums.length; i++) {
nums[i] = Integer.parseInt(split[i]);
}
int target = sc.nextInt();
System.out.println(searchInsert(nums, target));
sc.close();
}
// 二分
public static int searchInsert(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
while (left <= right) {
int mid = (left + right) >> 1;
if (nums[mid] > target) {
right = mid - 1;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
return mid;
}
}
return left;
}
}
结果
注意点
一定要处理好mid left right的变化,是否+1 -1