-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path704.py
35 lines (30 loc) · 1.09 KB
/
704.py
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
# Binary Search
# Given an array of integers nums which is sorted in ascending order, and an integer target,
# write a function to search target in nums. If target exists, then return its index. Otherwise, return -1.
# You must write an algorithm with O(log n) runtime complexity.
# 1. Input: nums = [-1,0,3,5,9,12], target = 9, Output: 4
# Explanation: 9 exists in nums and its index is 4
# 2. Input: nums = [-1,0,3,5,9,12], target = 2, Output: -1
# Explanation: 2 does not exist in nums so return -1
# worst case time complexity
# for i in range(len(nums)):
# if target == nums[i]:
# return i
# return -1
from typing import List
class Solution:
def search(self, nums: list[int], target: int):
low = 0
high = len(nums) - 1
while low <= high:
mid = (low + high) // 2
if target == nums[mid]:
return mid
elif target < nums[mid]:
high = mid - 1
elif target > nums[mid]:
low = mid + 1
return -1
solution = Solution()
result = solution.search([-1, 0, 3, 5, 9, 12], 9)
print(result)