搜索插入位置(Java 2种算法实现)

搜索插入位置


题目

搜索插入位置(力扣:35)

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

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

分析

2种实现方案,一种可以采用遍历的方式(暴力解法),时间复杂度为O(n),另一种采用二分查找法,时间复杂度为O(logn)。

代码实现:

    /**
     * 35. 搜索插入位置
     * @param nums
     * @param target
     * @return
     */
    public int searchInsert(int[] nums, int target) {
        if(nums == null){
            return -1;
        }
        for(int i=0;i= target){
                return i;
            }
        }
        return nums.length;
    }

代码实现:

    /**
     * 35. 搜索插入位置
     * @param nums
     * @param target
     * @return
     */
    public int searchInsert2(int[] nums, int target) {
        if(nums == null){
            return -1;
        }
        int l = 0, r = nums.length-1;
        int m;
        while(l<=r){
            m = (l + r) >>> 1;
            if(nums[m] == target){
                return m;
            }else if(nums[m] < target){
                l = m + 1;
            }else{
                r = m - 1;
            }
        }
        return l;
    }

你可能感兴趣的:(算法)