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.

 

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

Example 4:

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

Example 5:

Input: nums = [1], target = 0
Output: 0

 

Constraints:

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

Rust Solution

struct Solution;

impl Solution {
    fn search_insert(nums: Vec<i32>, target: i32) -> i32 {
        match nums.binary_search(&target) {
            Ok(i) => i as i32,
            Err(i) => i as i32,
        }
    }
}

#[test]
fn test() {
    let nums = vec![1, 3, 5, 6];
    let target = 5;
    assert_eq!(Solution::search_insert(nums, target), 2);
    let nums = vec![1, 3, 5, 6];
    let target = 2;
    assert_eq!(Solution::search_insert(nums, target), 1);
    let nums = vec![1, 3, 5, 6];
    let target = 7;
    assert_eq!(Solution::search_insert(nums, target), 4);
    let nums = vec![1, 3, 5, 6];
    let target = 0;
    assert_eq!(Solution::search_insert(nums, target), 0);
}

Having problems with this solution? Click here to submit an issue on github.