[LeetCode] 33. Search in Rotated Sorted Array (python, 이진탐색) 풀이
728x90
반응형
가장 작은 원소가 있는 인덱스가 피봇 위치이고 그 위치를 기준으로 값을 찾되,
left, right 인덱스는 mid를 기준으로 계산한다
*mid 와 mid_pivot을 따로 계산해준다
class Solution:
def search(self, nums: List[int], target: int) -> int:
left,right=0,len(nums)-1
while left<right:
mid=left+(right-left)//2
if nums[mid]>nums[right]:
left=mid+1
else:
right=mid
pivot=left
left,right=0,len(nums)-1
while left<=right:
mid=left+(right-left)//2
pivot_mid=(pivot+mid)%len(nums)
if nums[pivot_mid]<target:
left=mid+1
elif nums[pivot_mid]>target:
right=mid-1
else: return pivot_mid
return -1
728x90
반응형
'Leetcode' 카테고리의 다른 글
leetcode- single number(비트연산자, 파이썬) (0) | 2020.10.12 |
---|---|
LeetCode -Intersection of Two Arrays (투포인터, 이분탐색, 파이썬) (0) | 2020.10.12 |
LeetCode - Array Partition 1 (0) | 2020.10.06 |
LeetCode. Group Anagrams (python) (0) | 2020.10.06 |
22. Generate Parentheses (0) | 2020.10.03 |
TAGS.