[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
반응형
TAGS.

Comments