<Hard> Find Minimum in Rotated Sorted Array II (LeetCode : C#)

이도희·2023년 5월 19일
0

알고리즘 문제 풀이

목록 보기
88/185

https://leetcode.com/problems/find-minimum-in-rotated-sorted-array-ii/

📕 문제 설명

n 길이의 오름차순 정렬된 배열이 1~n번 회전된다. 예를 들어 1번 회전 후 결과는 nums[n-1], nums[0], ..., nums[n-2] 형태 이다. 이때 배열에서의 최솟값 반환하기 (배열은 중복된 값을 가진다.)

  • Input
    배열
  • Output
    최솟값

예제

풀이

최대랑 최소가 붙어 있고 정렬되어 있는 상태로 섞인 것이기 때문에 이전게 더 크다면 최대 최소인 케이스고 (if문), 그게 아니면 left 땡겨서 최대 최소쪽 보도록 해야한다. (right를 땡겨도 상관 없다.)

// 아 어차피 맨 밑 Min 함수에서 다 걸리는 거였다.. (이게 n자체가 5000이라 min 함수도 통과 되는 것 같다 -> 이분 탐색 자체를 쓰는 식으로 변경하는게 좋을듯하다.)

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

        int left = 0;
        int right = nums.Length - 1;
        int index = -1;

        while (left < right)
        {
            int mid = (left + right) / 2;

            if (nums[mid] > nums[mid + 1])
            {
                return nums[mid + 1];
            }

            left = left + 1;
        }

        return nums.Min(); 
    }
}

결과

profile
하나씩 심어 나가는 개발 농장🥕 (블로그 이전중)

0개의 댓글