【leetcode】35. Search Insert Position

Given a sorted array of distinct integers 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 must write an algorithm with O(log n) runtime complexity.

Example 1:

Input: nums = [1,3,5,6], target = 5
Output: 2

1、排好序的数组、时间复杂度限制O(logn),明眼人都能看出需要用到二分法,这道题要稍微注意一下最后插入数据的位置。
class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        // 二分法的检索方法 时间复杂度才是o(logn)
        int left=0,right=nums.size()-1,mid=0;
        while(left<right){
            mid=(left+right)/2;
            if(nums[mid]<target){
                left=mid+1;
                
            }
            else if(nums[mid]>target){
                right=mid-1;
                
            }
            else{
                return mid; //找到相同的元素直接返回
            }
            
        }
        return target>nums[left]? left+1:left; //否则需要判断一下元素具体插入位置
        
    }
};

 




上一篇:python正则表达式


下一篇:利用Python实现动态排名效果