Notice
														
												
											
												
												
													Recent Posts
													
											
												
												
													Recent Comments
													
											
												
												
											
									| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 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 | 
													Tags
													
											
												
												- 자바스크립트 jQuery
 - 보안뉴스 요약
 - 깃허브
 - numpy
 - 보안뉴스
 - 카카오프로젝트100
 - 자바스크립트 prototype
 - javascript
 - ES6
 - oracle
 - oracle db
 - 자바스크립트
 - 보안뉴스 한줄요약
 - 랜섬웨어
 - 다크웹
 - 자바스크립트 API
 - 오라클
 - 파이썬
 - php
 - 보안뉴스요약
 - 보안뉴스한줄요약
 - Oracle SQL
 - 자바스크립트 node
 - 자바스크립트 element api
 - 카카오프로젝트
 - 자바스크립트 객체
 - 카카오프로젝트 100
 - GIT
 - python
 - 자바스크립트 기본 문법
 
													Archives
													
											
												
												- Today
 
- Total
 
FU11M00N
[LeetCode] Find Minimum in Rotated Sorted Array - Javascript 본문
Find Minimum in Rotated Sorted Array
[특정 값을 기준으로 뒤바뀌어 정렬이 되어 있는 배열의 target 찾기]

제약 조건 
n == nums.length
1 <= n <= 5000
-5000 <= nums[i] <= 5000
All the integers of nums are unique.
nums is sorted and rotated between 1 and n times.
Example
ex1) Input: nums = [3,4,5,1,2]
     Output: 1
     Explanation: The original array was [1,2,3,4,5] rotated 3 times.
ex2) Input: nums = [4,5,6,7,0,1,2]
     Output: 0
     Explanation: The original array was [0,1,2,4,5,6,7] and it was rotated 4 times.
ex3) Input: nums = [11,13,15,17]
     Output: 11
     Explanation: The original array was [11,13,15,17] and it was rotated 4 times.
문제 접근 방식
정렬이 되어있지만, 특정 인덱스를 기준으로 돌아간 배열이 주어졌을 때, 최솟값을 구하는 문제이다.
만약 start가 end보다 작거나 같다면 해당 배열은 정렬이 되어있다는 의미로 while 문을 탈출해 nums[start]를 리턴해 정답을 풀이한다.
      if (nums[start] <= nums[end]) {
         break;
      }
nums[start]가 nums[mid]보다 작거나 같다면, 배열의 절반 중 왼쪽은 정렬이 되어있다고 봐도 된다.
즉 해당 제어문이 true라면 start를 mid+1로 업데이트하고, 아니라면 end를 mid로 업데이트한다.
해당 제어문을 반복하며 nums[stasrt]가 nums[end]보다 작거나 같을 때까지 즉 배열이 정렬되어 있을 때까지,
start와 end의 값을 초기화한다.
      let mid = Math.floor((start + end) / 2);
      if (nums[start] <= nums[mid]) {
         start = mid + 1;
      } else {
         end = mid;
      }
sovle 코드
var findMin = function (nums) {
   let start = 0,
      end = nums.length - 1;
   while (start <= end) {
      if (nums[start] <= nums[end]) {
         break;
      }
      let mid = Math.floor((start + end) / 2);
      if (nums[start] <= nums[mid]) {
         start = mid + 1;
      } else {
         end = mid;
      }
   }
   return nums[start];
};
'알고리즘' 카테고리의 다른 글
| [LeetCode] Kth Smallest Element in a BST - Javascript (1) | 2023.09.08 | 
|---|---|
| [LeetCode] Minimum Absolute Difference in BST - Javascript (0) | 2023.09.06 | 
| [LeetCode] Search in Rotated Sorted Array - Javascript (0) | 2023.09.04 | 
| [LeetCode] Merge Sorted Array - Javascript (0) | 2023.09.04 | 
| Linear Probing 방식 Hash Table을 구현 - javascript (0) | 2023.09.04 | 
			  Comments