Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크
길이의 배열을 가정 N
오름차순으로 정렬된 것은 회전 ~ 사이 1
그리고 N
예를 들어 배열입니다. 숫자 = [0,1,2,4,5,6,7]
다음과 같이 될 수 있습니다:
[4,5,6,7,0,1,2]
회전했다면4
타임스.[0,1,2,4,5,6,7]
회전했다면7
타임스.
주목하세요 회전 배열 [a[0], a[1], a[2], ..., a[n-1]]
1회 결과가 배열에 포함됨 [a[n-1], a[0], a[1], a[2], ..., a[n-2]]
.
정렬된 회전 배열이 주어지면 숫자
~의 고유한 요소, 반환 이 배열의 최소 요소.
다음에서 실행되는 알고리즘을 작성해야 합니다. O(log n) 시간입니다.
예시 1:
입력: 숫자 = [3,4,5,1,2] 산출: 1 설명: 원래 배열은 [1,2,3,4,5] 3번 회전되었습니다.
예 2:
입력: 숫자 = [4,5,6,7,0,1,2] 산출: 0 설명: 원래 배열은 [0,1,2,4,5,6,7]이었고 4번 회전되었습니다.
예시 3:
입력: 숫자 = [11,13,15,17] 산출: 11 설명: 원래 배열은 [11,13,15,17]이었고 4번 회전되었습니다.
제약:
n == 숫자.길이
1 <= n <= 5000
-5000 <= 숫자[i] <= 5000
- 모든 정수
숫자
~이다 고유한. 숫자
사이에서 정렬되고 회전됩니다.1
그리고N
타임스.
파이썬
# 시간 복잡도: O(logn) # 공간 복잡도: O(1) import List 클래스 입력 시 솔루션: def findMin(self, nums: List[int]) -> int: if len(nums) == 1: return nums [0] left, right = 0, len(nums) - 1 if nums[right] > nums[0]: return nums[0] while left <= right: mid = left + (right - left) // 2 if nums[mid] > nums[mid + 1]: nums[mid] < nums[mid - 1]인 경우 nums[mid+1] 반환: nums[mid] > nums[-1]인 경우 nums[mid] 반환: 왼쪽 = mid + 1 else: right = mid - 1 return nums[mid] nums = [11, 13, 15, 17] print(Solution().findMin(nums))