Search Insert Position

Problem

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

Example 2:

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

Example 3:

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

Constraints:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums contains distinct values sorted in ascending order.
  • -104 <= target <= 104

Solution

class Solution {
    public int searchInsert(int[] nums, int target) {
        var left = 0;
        var right = nums.length - 1;

        while (left <= right) {
            var middle = left + ((right - left) / 2);
            var n = nums[middle];
            if (n == target) {
                return middle;
            } else if (n < target) {
                // check the right half
                left = middle + 1;
            } else {
                // check the left half
                right = middle - 1;
            }
        }

        return left;
    }
}

Standard Library

class Solution {
    public int searchInsert(int[] nums, int target) {
        var pos = Arrays.binarySearch(nums, target);
        if (pos < 0) {
            pos = (pos + 1) * -1;
        }
        return pos;
    }
}

Recent posts from blogs that I like

Plugins case study: Pluggy

Recently I came upon Pluggy, a Python library for developing plugin systems. It was originally developed as part of the pytest project - known for its rich plugin ecosystem - and later extracted into a standalone library. You're supposed to reach out for Pluggy if you want to add a plugin system to ...

via Eli Bendersky

Publishing WASM wheels to PyPI for use with Pyodide

via Simon Willison

The Great Ladies of Impressionism

Brief reviews of the paintings of 3 of the Great Ladies of Impressionism, Berthe Morisot, Marie Bracquemond, and Eva Gonzalès.

via The Eclectic Light Company