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
- 연결 리스트
- APOLLO
- 포인터
- 브라우저
- C
- 큐
- 자바스크립트
- GraphQL
- 자료구조
- 해시테이블
- RT scheduling
- 이진탐색
- 컨테이너
- 타입스크립트
- Machine Learning
- 프로세스
- vue3
- 릿코드
- 연결리스트
- cors
- 웹팩
- 프론트엔드
- RxJS
- 배열
- pytorch
- alexnet
- 스택
- 코딩테스트
- 알고리즘
- 프로그래머스
Archives
- Today
- Total
프린세스 다이어리
[LeetCode] First Bad Version - 자바스크립트 풀이 본문
728x90
왜 "Advanced" Binary Search 인지 모르겠으나 여기서 원하는 대로 풀어드림.
1. 접근 방법
(1) 장애 난 버전이랑 그렇지 않은 버전을 나누어서 탐색하면 되므로 이진탐색으로 접근한다
(2) 이전 버전 mid - 1이 정상 버전이고 지금 검사중인 mid 버전이 장애 난 버전이면 지금 검사중인 mid 버전 리턴.
if (!isBadVersion(mid - 1) && isBadVersion(mid)) return mid;
(3) 그 외 경우에서, 지금 버전 mid가 장애 난 버전이면 왼쪽 리스트 탐색하고, 정상 버전이면 오른쪽 리스트를 탐색한다.
if (isBadVersion(mid)) {
right = mid;
} else {
left = mid + 1;
}
(4) left 리턴
2. 전체 풀이
var solution = function(isBadVersion) {
return function(n) {
if (n === 1) return 1;
let left = 1;
let right = n;
let mid = 0;
while (left < right) {
mid = left + Math.floor((right - left) / 2);
if (!isBadVersion(mid - 1) && isBadVersion(mid)) return mid;
if (isBadVersion(mid)) {
right = mid;
} else {
left = mid + 1;
}
}
return left;
};
};
728x90
'자료구조, 알고리즘' 카테고리의 다른 글
[LeetCode] Find Minimum in Rotated Sorted Array - 자바스크립트 풀이 (0) | 2021.11.28 |
---|---|
[LeetCode] Find Peak Element - 자바스크립트 풀이 (0) | 2021.11.28 |
[LeetCode] Search in Rotated Sorted Array - 자바스크립트 풀이 (0) | 2021.11.28 |
[LeetCode] Sqrt 문제 - 자바스크립트 풀이 (0) | 2021.11.27 |
[프로그래머스] 로또의 최고 순위와 최저 순위 - 자바스크립트 (0) | 2021.11.27 |
Comments