Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- GraphQL
- 알고리즘
- 타입스크립트
- C
- 컨테이너
- pytorch
- 자료구조
- 이진탐색
- 스택
- 자바스크립트
- alexnet
- 웹팩
- Machine Learning
- 배열
- 연결리스트
- 해시테이블
- 프로세스
- 연결 리스트
- vue3
- cors
- 코딩테스트
- APOLLO
- 포인터
- 릿코드
- 프론트엔드
- 브라우저
- RxJS
- RT scheduling
- 프로그래머스
- 큐
Archives
- Today
- Total
프린세스 다이어리
[LeetCode] Find Minimum in Rotated Sorted Array - 자바스크립트 풀이 본문
728x90
이전 회전배열 탐색 문제 풀고 오니 핵쉬움 3분컷(문제 풀이 조건이 쉽게 주어지긴 했음)
1. 접근 방법
(1) mid 값이 mid - 1 값보다 작은 경우, 회전된 상태에서 mid값이 인덱스 0인 경우이므로 mid의 값을 반환한다.
if (nums[mid - 1] > nums[mid]) return nums[mid];
(2) mid 기준 왼쪽이 정렬된 상태면 left를 mid + 1로 옮겨 준다,
(3) mid 기준 오른쪽이 정렬된 상태면 right를 mid로 옮겨 준다.
if (nums[0] < nums[mid]) {
// 왼쪽이 정렬된 상태일 때
left = mid + 1;
} else {
// 오른쪽이 정렬된 상태일 때
right = mid;
}
(4) 주어지는 배열의 길이가 1이거나 또는 처음부터 회전 안한 상태의 정렬된 배열이 인자로 넘어오는 경우 예외처리로 인덱스 0 값을 반환한다.
if (nums.length === 1 || nums[0] < nums[nums.length - 1]) return nums[0];
2. 전체 풀이
/**
* @param {number[]} nums
* @return {number}
*/
var findMin = function(nums) {
if (nums.length === 1 || nums[0] < nums[nums.length - 1]) return nums[0];
let left = 0;
let right = nums.length;
let mid = 0;
while (left < right) {
mid = left + Math.floor((right - left) / 2);
if (nums[mid - 1] > nums[mid]) return nums[mid];
if (nums[0] < nums[mid]) {
// 왼쪽이 정렬된 상태일 때
left = mid + 1;
} else {
// 오른쪽이 정렬된 상태일 때
right = mid;
}
}
return nums[left];
};
728x90
'자료구조, 알고리즘' 카테고리의 다른 글
[LeetCode] Find K Closest Elements - 자바스크립트 풀이 (0) | 2021.11.28 |
---|---|
[LeetCode] Search for a Range - 자바스크립트 풀이 (0) | 2021.11.28 |
[LeetCode] Find Peak Element - 자바스크립트 풀이 (0) | 2021.11.28 |
[LeetCode] First Bad Version - 자바스크립트 풀이 (0) | 2021.11.28 |
[LeetCode] Search in Rotated Sorted Array - 자바스크립트 풀이 (0) | 2021.11.28 |
Comments