Search Insert Position

https://leetcode.com/problems/search-insert-position

给定一个有序数组nums, 和一个target,问将这个target插入nums的位置;这里假设数组中没有重复值。

二分查找

class Solution {
public:
    int searchInsert(vector& nums, int target) {
        int lo = 0, hi = nums.size()-1;
        while(lo < hi)
        {
            int mi = (lo+hi)>>1;
            (nums[mi] < target ? lo = mi + 1 : hi = mi);
        }
        return (nums[lo] < target) ? lo +1 : lo;
    }
};

退出while循环时,lo和hi相等,此时如果 target== nums[lo],则返回lo,如果target > nums[lo],则应该在 lo + 1 位置插入;如果 target < nums[lo],则在lo位置插入;

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