leetcode [153]

Seungwon·2023년 4월 10일

leetcode

목록 보기
5/7

배열안에 최소값을 찾는 문제 시간복잡도 O(log n)으로 해결해야함

루프마다 루프횟수가 절반으로 줄어들 수 있는 이진탐색(Binary Search)를 대입시켜야함

업앤다운 게임이 생각이 난다

길이만큼 루프를 실행하는 것이 아니라, 조건을 찾을때까지 실행하는 방법


var findMin = function(nums) {
    let l = 0;
    let r = nums.length -1;
    while (l < r) {
        let m = Math.floor((l + r) / 2);
      	console.log("left:" + l + " middle:" + m + " right:" + r);
      
        if (nums[m] < nums[r]) {
            r = m;
          	console.log("r = m edited:" + r);
          
        } else if (nums[m] > nums[r]) {
            l = m + 1;
          	console.log("m + 1 edited:" + l);
          
        } else if (nums[m] < nums[l]) {
            r = r - 1;
          	console.log("r -1 edited:" + r);
        }
    }
    return nums[l];    
};
[3,4,5,1,2]

left:0 middle:2 right:4
m + 1 edited:3
left:3 middle:3 right:4
r = m edited:3
[4,5,6,7,0,1,2]

left:0 middle:3 right:6
m + 1 edited:4
left:4 middle:5 right:6
r = m edited:5
left:4 middle:4 right:5
r = m edited:4
[11,13,15,17]

left:0 middle:1 right:3
r = m edited:1
left:0 middle:0 right:1
r = m edited:0

0개의 댓글