美文网首页
搜索插入位置

搜索插入位置

作者: Lularible | 来源:发表于2020-04-02 13:06 被阅读0次

    LeetCode第35题

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

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

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

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

    思路

    采用二分法来做。注意边界条件的处理。

    源代码

    int searchInsert(int* nums, int numsSize, int target){
        //二分查找
        int mid = numsSize / 2;
        int begin = 0;
        int end = numsSize - 1;
        while(begin < end){
            if(target == nums[mid]){
                return mid;
            }
            else if(target < nums[mid]){
                end = (mid - 1) < 0 ? (0) : (mid - 1);
                mid = (begin + end) / 2;
            }
            else{
                begin = (mid + 1) < numsSize ? (mid + 1) :(numsSize - 1);
                mid = (begin + end) / 2;
            }
        }
        if(target <= nums[begin]){
            return begin;
        }
        else{
            return (end + 1);
        }
    }
    

    分析

    时间复杂度为log级别,空间复杂度为常数级别。

    相关文章

      网友评论

          本文标题:搜索插入位置

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