Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Here are few examples.
[1,3,5,6]
, 5 → 2
[1,3,5,6]
, 2 → 1
[1,3,5,6]
, 7 → 4
[1,3,5,6]
, 0 → 0
题意:给出一个有序数组和一个数,如果在数组中找得到这个数,就返回下标,如果找不到,就返回有有序插入时的下标
思路:用二分查找法
代码如下
public class Solution { public int searchInsert(int[] nums, int target) { int left = 0, right = nums.length; int mid = 0; while (left < right) { mid = (left + right) >> 1; if (nums[mid] == target) return mid; else if (nums[mid] < target) { left = mid + 1; } else right = mid; } return left; } }