题解 | #旋转数组的最小数字#

旋转数组的最小数字

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];
    }
}

需要考虑等值太多的情况,这种情况下,原先二分查找中的判断就需要多几个分类,将等值判断摘出来,做一个新的状态转移。

全部评论

相关推荐

01-03 09:21
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
01-15 22:54
武汉大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务