-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathBinary_Search_leetcode.py
More file actions
34 lines (27 loc) · 991 Bytes
/
Binary_Search_leetcode.py
File metadata and controls
34 lines (27 loc) · 991 Bytes
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
""" 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.
Example 1:
Input: nums = [-1,0,3,5,9,12], target = 9
Output: 4
Explanation: 9 exists in nums and its index is 4
"""
class Solution:
def search(self, nums: List[int], target: int) -> int:
for i in range(len(nums)):
if nums[i] == target:
return i
return -1
# alternative solution: (2 pointer)
class Solution:
def search(self, nums: List[int], target: int) -> int:
N = len(nums)
l,r = 0, N-1
while l<=r:
mid = (l+r)//2
if nums[mid]==target:
return mid
elif nums[mid] < target:
l = mid+1
else:
r = mid-1
return -1