-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path35_Search_Insert_Position.py
More file actions
41 lines (31 loc) · 1.24 KB
/
35_Search_Insert_Position.py
File metadata and controls
41 lines (31 loc) · 1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
"""
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
"""
class Solution:
def searchInsert(self, nums: list[int], target: int) -> int:
l, r = 0, len(nums)-1
while l<=r:
mid = (l+r)//2 #Find the middle element in the array
if target == nums[mid]:
return mid #if target is equal to the mid then return mid
elif target > nums[mid]:
l = mid+1 #if target is greater than mid, discard the left half by updating l
else:
r = mid-1 #if target is less than mid, discard the right half by uodating r
return l #if target is not found then return the index where it should be palced
#Time Complexity = O(logn)