题解 | #旋转排列之找出最矮的牛#

旋转排列之找出最矮的牛

https://www.nowcoder.com/practice/ea91217beb83444aa324b86bfab4a952

知识点:二分

思路:题意,降序数组旋转后,查找某个数据,如果是升序或者降序,我们可以直接使用二分查找

因为,中间数mid,可以根据左右边界进行判断,

但其实这里数组旋转后,性质不变,变成了两个降序数组,比如54321 76

因此,我们只需要判断mid和最后一个数字,看其属于两个降序数组,

然后就变成了最开始的单数组降序二分查找

编程语言:java

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param heights int整型一维数组 
     * @return int整型
     */
    public int findMin (int[] heights) {
        // write code here
        int l = 0,r = heights.length - 1;
        while (l < r) {
            int mid = (r +l) >>1;
            if(heights[mid] < heights[r]) {
                l = mid + 1;
            } else if (heights[mid] > heights[r]) {
                r = mid;
            }else{
                l++;
            }
        }
        return heights[l-1];
    }
}

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务