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

旋转排列之找出最矮的牛

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-05 04:14
已编辑
真烦好烦真烦:看着感觉好强啊,这都过不了吗
投递字节跳动等公司7个岗位 面试中的破防瞬间
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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