Menu
CoddyTech

Find Minimum in Rotated Sorted Array

보통이진 탐색python iconjava iconcpp iconc iconjs icon+10

서로 다른 정수로 이루어진 목록을 오름차순으로 정렬한 다음 회전했습니다. 즉, 앞에서 일부 요소를 가져와 같은 순서로 뒤에 옮겼습니다. 옮긴 요소의 수는 0일 수도 있습니다. 예를 들어, [2, 5, 9, 11, 13, 15, 17]을 3만큼 회전하면 [11, 13, 15, 17, 2, 5, 9]가 됩니다. 회전된 목록 nums가 주어집니다. O(log n) 시간에 가장 작은 값을 반환하세요.

함수

findMin(nums: integer-array) → integer
numsinteger-array
회전된 정렬된 서로 다른 정수 목록
반환값integer
nums에서 가장 작은 값

제약 조건

  • 1 ≤ nums.length ≤ 5000
  • -104 ≤ nums[i] ≤ 104
  • nums의 모든 값은 서로 다릅니다.
  • nums는 어떤 k만큼 회전된 오름차순 리스트이며, 0 ≤ k < nums.length입니다. k = 0이면 회전되지 않은 상태입니다.

예제

입력
nums = [11, 13, 15, 17, 2, 5, 9]
출력
2
설명
값은 11에서 17까지 올라간 다음 2까지 내려가며, 여기서 두 번째 구간이 시작됩니다. 검색 과정에서 인덱스 3의 17 > 9를 확인하므로 최솟값은 그 오른쪽에 있습니다. 그런 다음 5 ≤ 9와 2 ≤ 5에 따라 범위가 인덱스 4 하나만 남을 때까지 hi가 뒤로 이동하고, 그곳에는 2가 있습니다.

lock icon제출 시 숨은 테스트 +17개

challenge icon

후속 질문

정렬하지 않고 nums에서 k번째로 작은 값을 O(log n) 시간에 반환할 수 있나요?

코드 초기화
def findMin(nums):
    # 여기에 코드를 작성하세요
테스트 케이스

케이스 1

케이스 2

케이스 3

입력

nums = [11, 13, 15, 17, 2, 5, 9]

기대값

2