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)