Skip to content

Commit d6b29c0

Browse files
committed
add solution: search-in-rotated-sorted-array
1 parent 2ccbfe3 commit d6b29c0

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
'''
2+
# 33. Search in Rotated Sorted Array
3+
4+
binary search + condition check
5+
6+
이진 탐색 쀑, μ™Όμͺ½μ΄ μ •λ ¬λ˜μ—ˆμ„ λ•Œ
7+
- νƒ€κ²Ÿμ΄ μ •λ ¬λœ μ™Όμͺ½μ— μžˆλŠ” 경우, μ™Όμͺ½ 탐색 (leftλΆ€ν„° mid - 1 μ‚¬μ΄μ—μ„œ νƒ€κ²Ÿμ„ 탐색)
8+
- νƒ€κ²Ÿμ΄ μ •λ ¬λœ μ™Όμͺ½μ— 없을 경우, 였λ₯Έμͺ½ 탐색 (mid + 1λΆ€ν„° right μ‚¬μ΄μ—μ„œ νƒ€κ²Ÿμ„ 탐색)
9+
10+
이진 탐색 쀑, 였λ₯Έμͺ½μ΄ μ •λ ¬λ˜μ—ˆμ„ λ•Œ
11+
- νƒ€κ²Ÿμ΄ μ •λ ¬λœ 였λ₯Έμͺ½μ— μžˆλŠ” 경우, 였λ₯Έμͺ½ 탐색 (mid + 1λΆ€ν„° right μ‚¬μ΄μ—μ„œ νƒ€κ²Ÿμ„ 탐색)
12+
- νƒ€κ²Ÿμ΄ μ •λ ¬λœ 였λ₯Έμͺ½μ— 없을 경우, μ™Όμͺ½ 탐색 (leftλΆ€ν„° mid - 1 μ‚¬μ΄μ—μ„œ νƒ€κ²Ÿμ„ 탐색)
13+
14+
## TC: O(log n)
15+
16+
binary search
17+
18+
## SC: O(1)
19+
20+
no extra space
21+
22+
'''
23+
class Solution:
24+
def search(self, nums: List[int], target: int) -> int:
25+
left = 0
26+
right = len(nums) - 1
27+
28+
while left <= right:
29+
mid = left + (right - left) // 2
30+
31+
if nums[mid] == target:
32+
return mid
33+
34+
if nums[left] <= nums[mid]: # is_left_sorted
35+
if nums[left] <= target < nums[mid]: # is_target_left
36+
right = mid - 1
37+
else:
38+
left = mid + 1
39+
else:
40+
if nums[mid] < target <= nums[right]: # is_target_right
41+
left = mid + 1
42+
else:
43+
right = mid - 1
44+
45+
return -1

0 commit comments

Comments
Β (0)