搜索插入位置

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

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

示例 1:

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

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

输入: [1,3,5,6], 7
输出: 4
示例 4:

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

解答:

/**
     * 二分法
     * 
     * @param nums
     * @param target
     * @return
     */
    public int searchInsert(int[] nums,int target){
        /*左侧指针*/
        int lo=0;
        /*右侧指针*/
        int hi=nums.length-1;
        /*当左侧指针小于等于右侧指针时遍历*/
        while (lo<=hi){
            /*计算中间节点*/
            int mid=(lo+hi)/2;
            /*当中间节点大于目标值时,右侧节点移到中间节点的左边一位*/
            if(nums[mid]>target){
                hi=mid-1;
                /*当中间节点小于目标值时,左侧节点移到中间节点的右边一位*/
            }else if(nums[mid]<target){
                lo=mid+1;
            }else{
                /*找到了返回目标值当前所在位置*/
                return mid;
            }
        }
        /*返回左侧节点,即是要插入的位置*/
        return lo;
    }
View Code

 

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/search-insert-position

posted @ 2019-11-26 17:18  有为吴  阅读(337)  评论(0编辑  收藏  举报