Skip to main content

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
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;
}
}
impl Solution {
pub fn search_insert(nums: Vec<i32>, target: i32) -> i32 {
nums.binary_search(&target).unwrap_or_else(|x| x) as i32
}
}