LeetCode 35. Search Insert Position

题目描述

Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

You may assume no duplicates in the array.

Example 1:
Input: [1,3,5,6], 5
Output: 2

Example 2:
Input: [1,3,5,6], 2
Output: 1

Example 3:
Input: [1,3,5,6], 7
Output: 4

Example 4:
Input: [1,3,5,6], 0
Output: 0

题目思路

代码 C++

  • 思路一、二分查找,递归实现
class Solution {
public:
    int searchInsert(vector& nums, int target) {
        return BinarySearch(nums, 0, nums.size()-1, target);
    }
    
    int BinarySearch(vector& nums, int left, int right, int target){
        if(left <= right){
            int indexOfmed = (left + right) / 2;
            int med = nums[indexOfmed];
            
            if(target < med){
                return BinarySearch(nums, left, indexOfmed-1, target);
            }
            else if(target > med){
                return BinarySearch(nums, indexOfmed+1, right, target);
            }
            else{
                return indexOfmed;
            }
        }
        else{
            return left;
        }
    }
};
  • 思路二、二分查找,循环方法实现
class Solution {
public:
    int searchInsert(vector& nums, int target) {
        int left = 0;
        int right = nums.size()-1;
        
        while(left <= right){
            int med = (left+right)/2;
            if(target < nums[med]){
                right = med-1;
            }
            else if(target > nums[med]){
                left = med+1;
            }
            else{
                return med;
            }
        }
        return left;
    }
};

总结展望

你可能感兴趣的:(LeetCode 35. Search Insert Position)