파이썬 코드
class Solution(object):
def findMin(self, nums):
left = 0
right = len(nums)-1
minIdx = self.binarySearch(nums,left,right)
return nums[minIdx]
def binarySearch(self,nums,left,right):
while left < right:
mid = (left+right)//2
if nums[mid]> nums[right]:
left = mid + 1
else:
right = mid
return left
자바 코드
class Solution {
public int findMin(int[] nums) {
int minIdx = findMinIdx(nums);
return nums[minIdx];
}
public int findMinIdx(int[] nums){
int left = 0;
int right = nums.length-1;
while(left < right){
int mid = (left+right)/2;
if (nums[mid]>nums[right]){
left = mid + 1;
}else{
right = mid;
}
}
return left;
}
}
시간 복잡도를 log(N)으로 구하기 위해 Binary Search를 사용했다.