35-搜索插入位置

leetcode题解——搜索插入位置

题目如下

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

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

解题思路

给定的数组是有序且无重复元素的,可以考虑暴力法和二分法

插入位置可以有四种情况:

  1. 目标位置在所有元素之前
  2. 目标位置等于某一个元素
  3. 目标位置在两个元素之间
  4. 目标位置在所有元素之后
//暴力法
int searchInsert(int* nums, int numsSize, int target){
    int n=0;
    int i;
    if(nums[0]>=target){
        return 0;
    }
    for(i=1; i<numsSize; i++){
        if(nums[i]<target){
            continue;
        }else if(nums[i]==target){
            break;
        }else{
            if(nums[i-1]==target){
                i--;
                break;
            }
            if(nums[i-1]<target){
                break;
            }
        }
    }
    return i;
}

//二分法
int searchInsert(int* nums, int numsSize, int target){
    int left=0;
    int right=numsSize-1;
    int mid;
    while(left<=right){
        mid=(left+right)/2;
        if(nums[mid]>target){
            right=mid-1;
        }else if(nums[mid]<target){
            left=mid+1;
        }else{
            return mid;
        }
    }
    return right+1;
}
posted @ 2021-03-06 11:58  平平无奇的打工人  阅读(51)  评论(0)    收藏  举报