35. Search Insert Position
https://leetcode.com/problems/search-insert-position
Python
Force Busted
class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        insert_pos = 0
        for index, num in enumerate(nums):
            if target == num:
                return index
            if target > num:
                insert_pos = index+1
        return insert_pos
Binary Search
class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        l, r = 0, len(nums)-1
        while l <= r:
            cur = (l+r) // 2
            if target == nums[cur]:
                return cur
            elif target < nums[cur]:
                r = cur - 1
            else:
                l = cur + 1
        return l
Go
Binary Search
func searchInsert(nums []int, target int) int {
    l, r := 0, len(nums)-1
    for l <= r {
        pivot := (l+r) / 2
        if (target == nums[pivot]) {
            return pivot
        } else if (target > nums[pivot]) {
            l = pivot + 1
        } else {
            r = pivot - 1
        }
    }
    return l
}
Rust
Binary Search
impl Solution {
    pub fn search_insert(nums: Vec<i32>, target: i32) -> i32 {
        let mut l = 0;
        let mut r = nums.len();
        while l < r {
            let pivot = (l+r) / 2;
            let num = nums[pivot];
            if target == num {
                return pivot as i32;
            } else if target > num {
                l = pivot + 1;
            } else {
                r = pivot;
            }
        }
        return l as i32;
    }
}
Build-in Binary Search
impl Solution {
    pub fn search_insert(nums: Vec<i32>, target: i32) -> i32 {
        nums.binary_search(&target).unwrap_or_else(|x| x) as i32
    }
}