题解 | #旋转数组的最小数字#
旋转数组的最小数字
https://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ public int minNumberInRotateArray (int[] nums) { // write code here if(nums[0]<nums[nums.length-1]){ return nums[0]; } int left=0, right=nums.length-1; int mid=0; while(left<right){ mid = (left+right)/2; if(nums[mid]>nums[right]){ left=mid+1; }else if(nums[mid]==nums[right]){ right=right-1; }else{ right=mid; } } return nums[left]; } }
需要考虑等值太多的情况,这种情况下,原先二分查找中的判断就需要多几个分类,将等值判断摘出来,做一个新的状态转移。