力扣153.寻找旋转排序数组中的最小值
力扣刷题 12

原题,题目描述:

e4c1804f-d8aa-4332-ab1f-9582a655827f.png

思路

这里题为觉得和昨天那道题思路大差不差,只不过昨天那道题需要寻找数组中的确定的某个值,但是今天这道题是寻找数组中的最小值。

题目还是要求时间复杂度​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
作者
than
发布于
更新于
许可