美文网首页LeetCode交流
LeetCode:搜索插入位置

LeetCode:搜索插入位置

作者: 一萍之春 | 来源:发表于2019-03-08 20:02 被阅读1次

    搜索插入位置


    题目叙述:

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

    示例:

    示例 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

    解题思路:

    这题的思路比较简单,就是利用二分查找进行检索,如果找到满足当nums[mid]<target时mid<nums.length-1&&nums[mid+1]>target,直接返回mid+1,或者满足nums[mid]==target返回mid。如果left相遇即返回两个值中的任意一个。时间复杂度为O(log(n))。

    代码实现:
    class Solution {
        public int searchInsert(int[] nums, int target) {
            int left=0,right=nums.length;
            while(left<right){
                int mid=(left+right)>>1;
                if(nums[mid]<target){
                    if(mid<nums.length-1&&nums[mid+1]>target){
                        return mid+1;        
                    }
                    left=mid+1;
                }
                else{
                    if(nums[mid]==target){
                        return mid;
                    }
                    right=mid;
                }
            }
            return right;
        }
    }
    

    相关文章

      网友评论

        本文标题:LeetCode:搜索插入位置

        本文链接:https://www.haomeiwen.com/subject/hvydpqtx.html