LeetCode 35.Search Insert Position

1.题目

2.题意

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

3.我的解法

int searchInsert(int* nums, int numsSize, int target) {
    int fro,end,mid;
    fro=0;
    end=numsSize-1;
    while(fro<=end){
        mid=(fro+end)/2;
        if (nums[mid]<target)
            fro=mid+1;
        else if(nums[mid]>target)
            end=mid-1;
        else
            return mid;
            
    }
    return fro;
}

标准的二分查找方法,定义三个变量,分别代表左中右三个位置,每次从中间开始查找,反复更改左右位置,直到完成目标,优于100%

4.优秀解法

int searchInsert(int* nums, int numsSize, int target) {
    return recur_search(nums, 0, numsSize-1, target);
}

int recur_search(int *nums, int low, int high, int target){
    int mid = (low + high) / 2;
    if (nums[mid] == target){
        return mid;
    }
    else if (low >= high){
        return nums[mid] > target ? mid : mid + 1;
    }
    if (nums[mid] > target){
        return recur_search(nums, low, mid-1, target);
    }
    else{
        return recur_search(nums, mid+1, high, target);
    }
}

主体思想一致,但这种解法使用了递归,有参考价值

猜你喜欢

转载自blog.csdn.net/baidu_31257925/article/details/80262448