LeetCode 153. 寻找旋转排序数组中的最小值(二分)

tech2024-08-09  52

153. 寻找旋转排序数组中的最小值

题意
给定一个无重复元素的升序旋转数组找出旋转数组的最小值
二分法
mid是向下取整:left相对于mid移动只要中值小于nums[right],说明最小值一定在mid且包含mid的左边只要中值大于nums[right],说明最小值一定在mid且不包含mid的右边

单独考虑旋转数组没有旋转的情况:即给定的是一个升序数组

此时nums[0]一定为最小值,即最小值一定在mid的左边使用二分法时需要让循环终止时即left == right,left在数组的最左边那么就必须让二分收缩时趋向与左边收缩,即让right向左边移动 class Solution { public static int findMin(int[] nums) { int left = 0; int right = nums.length - 1; while (left < right) { int mid = left + ((right - left) >> 1); if(nums[mid] < nums[right]) { right = mid; } else { left = mid + 1; } } return nums[left]; } }
最新回复(0)