力扣153.寻找旋转排序数组中的最小值
原题,题目描述:

思路
这里题为觉得和昨天那道题思路大差不差,只不过昨天那道题需要寻找数组中的确定的某个值,但是今天这道题是寻找数组中的最小值。
题目还是要求时间复杂度log(N),我们也需要使用二分查找,我们先设置左右两个指针,如果中间值大于右指针的值,直接让左指针等于中间指针的下一个。如果小于右指针的值,直接让右指针等于中间指针即可。这样我们不断的去逼近最小值。
代码
下面我们看代码:
class Solution {
public int findMin(int[] nums) {
int left = 0, right = nums.length - 1, mid = -1;
if (nums[left] <= nums[right]) {
return nums[0];
}
while (left < right) {
mid=(left+right)/2;
int value=nums[mid];
if (value>nums[right]){
left=mid+1;
}
if (value<nums[right]){
right=mid;
}
}
return nums[left];
}
}
代码是完全按照思路来的,提交打败百分百。时间复杂度log(N),空间复杂度log(1)。
力扣153.寻找旋转排序数组中的最小值
https://www.than.pw/archives/019c948e-2ee5-7169-98a6-028e778b44f9