Skip to content

35. Search Insert Position

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

c++
class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        if (nums.empty()) {
            return 0;
        }
        int l = 0;
        int r = nums.size() - 1;
        while (l <= r) {
            int m = (l + r) / 2;
            if (nums[m] == target) {
                return m;
            }
            if (nums[m] > target) {
                r = m - 1;
            } else {
                l = m + 1;
            }
        }
        return l;
    }
};
go
func searchInsert(nums []int, target int) int {
    if len(nums) == 0 {
        return 0
    }
    l, r := 0, len(nums) - 1
    for l <= r {
        m := (l+r) / 2
        if nums[m] == target {
            return m
        }
        if nums[m] > target {
            r = m - 1
        } else {
            l = m + 1
        }
    }
    return l
}
js
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var searchInsert = function(nums, target) {
  if (!nums.length) {
    return 0
  }

  var l = 0
  var r = nums.length - 1

  while (l <= r) {
    let m = (l + r) / 2 >> 0

    if (nums[m] === target) {
      return m
    }

    if (nums[m] > target) {
      r = m - 1
    } else {
      l = m + 1
    }
  }

  return l
}
py
class Solution(object):

    def searchInsert(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        if not nums:
            return 0
        l, r = 0, len(nums) - 1
        while l <= r:
            m = (l + r) // 2
            if nums[m] == target:
                return m
            if nums[m] > target:
                r = m - 1
            else:
                l = m + 1
        return l