Leetcode[35] Search Insert Position

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.

Example 1:

Input: [1,3,5,6], 5 Output: 2 Example 2:

Input: [1,3,5,6], 2 Output: 1 Example 3:

Input: [1,3,5,6], 7 Output: 4 Example 1:

Input: [1,3,5,6], 0 Output: 0

Binary Search

复杂度
O(lgN)

思路
二分法的模板:

while(left <= right) {
  int mid = (left + right) / 2;
  if(nums[mid] == target) return mid;
  // search in the right part;
  if(nums[mid] < target) {
    left = mid + 1;
  } else {
    right = mid - 1;
  }
}
return -1;

代码

class Solution {
    public int searchInsert(int[] nums, int target) {
        int left = 0, right = nums.length - 1;
        while(left <= right) {
            int mid = (left + right) / 2;
            if(nums[mid] < target) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }
        return left;
    }
}

hellolittleJ17
10 声望11 粉丝