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

旋转排列之找出最矮的牛

https://www.nowcoder.com/practice/ea91217beb83444aa324b86bfab4a952?tpId=354&tqId=10594908&ru=/exam/oj&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj

import java.util.*;


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

本题知识点分析:

1.数组遍历

2.双指针和二分查找

3.数组下标

本题解题思路:

1.初始化两个指针,一个left初始位置,一个right数组结束位置

2.二分思想,通过比较数组中间的元素和数组的最后一个元素来缩小查找范围

3.如果中间元素大于最后一个元素,说明最小元素在中间元素右侧,因为题目其实是降序的,更新 left = mid+1;

4.如果中间元素小于最后一个元素,说明最小元素在中间元素左侧,更新 right = mid;

5.最后left和right相遇的位置就是最小元素的位置

关键点:看清题目旋转其实就是降序的含义,无非是两个降序。

本题使用编程语言: Java

高频面试算法题解 文章被收录于专栏

高频面试算法题解,每天一小步,人生一大步,跟着一起刷起来!

全部评论

相关推荐

白火同学:大二有这水平很牛了,可以适当对关键信息加粗一点,比如关键技术、性能指标之类的。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-10 15:24
高考前一晚在OPPO手机上设置了早上5:30的闹钟,然而闹钟并未按时响起。直到妈妈做好早餐后,在6:27打开手机才发现闹钟未触发,“气得早上饭都没吃”。资本家你赢了
永不遗忘:我来解释一下 :Oppo 手机晚上两点会自动进行系统更新,这个系统更新会重置掉所有设置好的闹钟,而且他也不会告诉你,而且只有 Oppo 会这样,华为苹果小米三星都不会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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