Skip to content

Commit 0a48b72

Browse files
committed
- Search In Rotated Sorted Array #246
1 parent eca856c commit 0a48b72

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
from typing import List
2+
3+
class Solution:
4+
"""
5+
- Time Complexity: O(logN), N = len(nums)
6+
- Space Complexity: O(1)
7+
"""
8+
def search(self, nums: List[int], target: int) -> int:
9+
left, right = 0, len(nums) - 1
10+
11+
while left <= right:
12+
mid = (left + right) // 2
13+
14+
if target == nums[mid]:
15+
return mid
16+
17+
if nums[left] <= nums[mid]:
18+
if nums[left] <= target < nums[mid]:
19+
right = mid - 1
20+
else:
21+
left = mid + 1
22+
else:
23+
if nums[mid] < target <= nums[right]:
24+
left = mid + 1
25+
else:
26+
right = mid - 1
27+
28+
return -1
29+
30+
tc = [
31+
([4, 5, 6, 7, 0, 1, 2], 0, 4),
32+
([4, 5, 6, 7, 0, 1, 2], 3, -1),
33+
([1], 0, -1)
34+
]
35+
36+
solution = Solution()
37+
for i, (n, t, e) in enumerate(tc, 1):
38+
r = solution.search(n, t)
39+
print(f"TC {i} is Passed!" if r == e else f"TC {i} is Failed! - Expected: {e}, Result: {r}")

0 commit comments

Comments
 (0)