import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ public int minNumberInRotateArray (int[] nums) { // write code here // 解题思路: // 1.采用双指针 // 2.采用2分法 // 3.如果mid < right 说明mid 到right 是递增的,则最小值在 0 ~mid之间 riight = mid // 4. 如果mid > right 说明最小值在mid 和 right 之间,left = mid + 1; // 5.如果相等则不能判定在那边,right-- // 6.最终left的位置就是最小值的位置 if (nums == null || nums.length == 0) { return -1; } int left = 0; int right = nums.length - 1; while (left < right) { int mid = left + (right - left) / 2; if (nums[mid] < nums[right]) { // 说明最小值在左边 right = mid; continue; } // 说明最小值在右边 if (nums[mid] > nums[right]) { left = mid + 1; continue; } right--; } return nums[left]; } }