문제풀이/리트코드

리트 코드 - Search In Rotated Sorted Array 33번

JerryTheSWEngineer 2022. 2. 4. 20:09
반응형

https://leetcode.com/problems/search-in-rotated-sorted-array/

 

Search in Rotated Sorted Array - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

 

** 각기 다른 풀이

import heapq
from typing import List


class Solution:
    # 1 74ms, 14.2MB
    # def search(self, nums: List[int], target: int) -> int:
    #     if target in nums:
    #         return nums.index(target)
    #     else:
    #         return -1

    #2 68ms, 14.4MB
    def search(self, nums: List[int], target: int) -> int:
        pivot = 0
        for i in range(len(nums)-1):
            if nums[i] > nums[i+1]:
                pivot = i+1
        nums.sort()
        left, right = 0, len(nums) -1
        while left <= right:
            mid = (left+ right)//2
            if nums[mid] > target:
                right -=1
            elif nums[mid] < target:
                left += 1
            else:
                return (mid + pivot) % len(nums)
        return -1


aa = Solution()
print(aa.search([4,5,6,7,0,1,2], 1))

1. 파이썬다운 풀이

2. 투포인터를 활용한 이진 탐색

 

** 결론

역시나 이진 탐색이 주가 되는 문제들은 투 포인터를 활용한 이진 탐색이 좋다.

가독성을 위해서는 파이썬다운 풀이도 좋을 것 같다.

반응형