力扣 寻找旋转排序数组中的最小值 二分

‍ 题目地址


力扣 寻找旋转排序数组中的最小值 二分_第1张图片


力扣 寻找旋转排序数组中的最小值 二分_第2张图片

AC code

class Solution {
public int findMin(int[] nums)
	{
		int res = Integer.MAX_VALUE;
		int l = 0;
		int r = nums.length - 1;
		while (l < r)
		{
			int mid = l + r >> 1;
			if (nums[mid] < res)
				res = nums[mid];
			//中值 < 右值,说明最小值不可能出现在中值的右边(右边界收缩)
			if (nums[mid] < nums[r])
			{
				r = mid;
			}
			//中值 >= 右值
			//说明右边比左值还要小,最小值只可能出现在中值的右边 
			else
			{
				l = mid + 1;
			}
		}

		return nums[l];
	}
}

‍ 参考题解

你可能感兴趣的:(力扣,hot100,leetcode,算法,java)