[Leetcode] 81. Search in Rotated Sorted Array II(Medium)

김동환·2023년 11월 8일

코딩테스트

목록 보기
10/12

문제 설명

There is an integer array nums sorted in non-decreasing order (not necessarily with distinct values).

Before being passed to your function, nums is rotated at an unknown pivot index k (0 <= k < nums.length) such that the resulting array is nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]. For example, [0,1,2,4,4,4,5,6,6,7] might be rotated at pivot index 5 and become [4,5,6,6,7,0,1,2,4,4].

Given the array nums after the rotation and an integer target, return true if target is in nums, or false if it is not in nums.

You must decrease the overall operation steps as much as possible.

Example 1:

Input: nums = [2,5,6,0,0,1,2], target = 0
Output: true
Example 2:

Input: nums = [2,5,6,0,0,1,2], target = 3
Output: false

풀이

  • 그냥 직관적으로 정렬 후 binary search 해볼까 생각을 함 -> 어차피 O(nlogn)
  • 너무 쉬워서 다른 풀이들봐도 비슷함
class Solution:
    def search(self, nums: List[int], target: int) -> bool:
        
        #일단 그냥 다시 정렬하고 binary search 해봄
        nums.sort()
        l = 0
        r = len(nums) - 1
        find = False
        
        while l <= r and r < len(nums):
            mid = (l+r) // 2
            if nums[mid] == target:
                find = True 
                break
            elif nums[mid] > target: r = mid - 1
            else: l = mid + 1
    
        return find
        
profile
AI Engineer

0개의 댓글