力扣 35. 搜索插入位置

104 阅读1分钟

🔗 leetcode.cn/problems/se…

题目

  • 给一个排序后的升序数组,给一个目标值
  • 若目标值在数组中,返回其下标,若不在,返回要插入的 index

思路

  • 二分查找,注意要插入元素,插入的元素要比 left 大,比 right 小,所以在二分的时候,每次 left = mid + 1, right = mid

代码

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        int l = 0, r = nums.size();

        while (l < r) {
            int mid = (l + r) /2;
            if (nums[mid] == target) 
                return mid;
            if (nums[mid] < target)
                l = mid + 1;
            else 
                r = mid;
        }
        return l;
        
    }
};