【leetcode】35.搜索插入位置

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

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

示例 1:

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

实现思路: 使用二分查找就可以了。如果使用for循环的话,时间复杂度为O(n) 但是使用二分查找 时间复杂度就下降了很多,因此 注意边界的控制。

1.当target与查询的mid值相等 返回

2.当mid的值大于target max = mid-1;

3.当mid的值小于target min = mid+1

时间复杂度:o(logn)

注意边界的控制。

public int searchInsert(int[] nums, int target) {
        int min = 0;
        int max = nums.length-1;
        int mid;
        int index = 0;
        while (min<=max){
            //如果找到
            mid = (min+max)/2;
            if (nums[mid] == target){
                return mid;
            }else if (nums[mid]<target){
                min = mid+1;
            }else {
                max = mid-1;
            }
        }
        return min;
    }
原文地址:https://www.cnblogs.com/qxlxi/p/12860753.html