力扣 - 35. 搜索插入位置

题目描述:

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

你可以假设数组中无重复元素。

示例 1:

输入: [1,3,5,6], 5
输出: 2

[来源](https://leetcode-cn.com/problems/search-insert-position/)

题解:二分查找

class Solution {
    public int searchInsert(int[] nums, int target) {
        int i = binarySearch(nums,target);
        return Math.abs(i);
    }
    private int binarySearch(int[] a,int key) {
        int low = 0;
        int high = a.length - 1;

        while (low <= high) {
            int mid = (low + high) >>> 1;
            int midVal = a[mid];

            if (midVal < key) {
                low = mid + 1;
            } else if (midVal > key) {
                high = mid - 1;
            } else {
                return mid;
            }
        }
        return -(low);
    }
}

 

你可能感兴趣的:(力扣算法题,算法)