给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
输入: [1,3,5,6], 5 输出: 2示例 2:
输入: [1,3,5,6], 2 输出: 1示例 3:
输入: [1,3,5,6], 7 输出: 4 public class Demo01 { /* * 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引 * 如果目标值不存在数组中,按顺序插入的位置 * */ public static void main(String[] args) { System.out.println("在数组下标为"+s(new int[]{1, 2, 4, 6}, 5)+"处插入"); } private static int s(int[] nums,int target) { int n=nums.length; //定义我们的left 和 right , ans接受数组索引下标 int left=0, right=n-1, ans=0; while (left<=right){ //计算中间值 int mid=((left+right)/2); //目标值与中间值比较 //如果 大于中间值 left向中间值的右移动一位 //如果 小于中间值 right向中间值的左移动一位 if (target<=nums[mid]){ ans=mid; right=mid-1; }else { left=mid+1; } } return ans; } }给大家推荐一个刷题库的网站 力扣