LeetCode)153. Find Minimum in Rotated Sorted Array

유병수·2023년 5월 18일
0

153. Find Minimum in Rotated Sorted Array

주어지는 배열은 오른쪽으로 n번씩 옮겨진 배열이다. 옮겨지기 전 배열은 모두 정렬되어 있었다. n번씩 옮겨진 배열에서 옮겨지기 전 배열의 시작값을 찾아내면 되는 문제. 이 문제는 처음에는 문제에서 요구하는 O(log n)을 보지못해서 전체탐색으로 풀었었다.

class Solution {
    public int findMin(int[] nums) {
        int count = 0;
        for(int i=0; i<nums.length-1; i++){
            if(nums[i+1] < nums[i]){
                return nums[i+1];
            }
        }
        return nums[0];
    }
}

문제를 풀다가 O(log n)이 조건이므로 이분탐색을 사용해서 풀었다. O(N)도 런타임 0초로 통과하기는 함...!

class Solution {
    public int findMin(int[] nums) {

        int start = 0;
        int end = nums.length -1;

        while(start < end){
            int mid = start + (end - start) / 2;

            if(nums[end] < nums[mid]){
                start = mid + 1;
            }else if(nums[end] > nums[mid]){
                end = mid;
            }
        }

        return nums[start];
    }
}

0개의 댓글