Skip to content

Commit 2766ef7

Browse files
committed
solve 2
1 parent 6231777 commit 2766ef7

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
'''
2+
μ‹œκ°„ λ³΅μž‘λ„: O(log n)
3+
- 이진 탐색(Binary Search)을 μ‚¬μš©ν•˜μ—¬ 배열을 μ ˆλ°˜μ”© λ‚˜λˆ„λ©° νƒμƒ‰ν•˜λ―€λ‘œ O(log n)μž…λ‹ˆλ‹€.
4+
5+
곡간 λ³΅μž‘λ„: O(1)
6+
- 좔가적인 배열을 μ‚¬μš©ν•˜μ§€ μ•Šκ³ , λͺ‡ 개의 λ³€μˆ˜λ§Œ μ‚¬μš©ν•˜λ―€λ‘œ O(1)μž…λ‹ˆλ‹€.
7+
'''
8+
9+
from typing import List
10+
11+
class Solution:
12+
def search(self, nums: List[int], target: int) -> int:
13+
left, right = 0, len(nums) - 1
14+
15+
while left <= right:
16+
mid = (left + right) // 2
17+
18+
if nums[mid] == target:
19+
return mid
20+
21+
# μ™Όμͺ½ 절반이 μ •λ ¬λ˜μ–΄ μžˆλŠ” 경우
22+
if nums[left] <= nums[mid]:
23+
if nums[left] <= target < nums[mid]: # νƒ€κ²Ÿμ΄ μ™Όμͺ½ λ²”μœ„ 내에 있음
24+
right = mid - 1
25+
else: # νƒ€κ²Ÿμ΄ 였λ₯Έμͺ½ λ²”μœ„μ— 있음
26+
left = mid + 1
27+
# 였λ₯Έμͺ½ 절반이 μ •λ ¬λœ 경우
28+
else:
29+
if nums[mid] < target <= nums[right]: # νƒ€κ²Ÿμ΄ 였λ₯Έμͺ½ λ²”μœ„ 내에 있음
30+
left = mid + 1
31+
else: # νƒ€κ²Ÿμ΄ μ™Όμͺ½ λ²”μœ„μ— 있음
32+
right = mid - 1
33+
34+
return -1

0 commit comments

Comments
Β (0)