题解 | #旋转排列之找出最矮的牛#
旋转排列之找出最矮的牛
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]; } }