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

旋转数组的最小数字

https://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba

由于没有转换前的数组是非递减,即右边的数字总是大于等于相邻左边的。
转换后,分两种情况:
第一种:有0个元素转换,即还是原来的数组,那么最左边的依然是最小值,因此转换后如果最左边的值小于最右边的值,说明是0个元素转换。
第二种:大于0个元素转换,那么最左边的数字一定是大于等于最右边的,那么最小值一定是在下一个元素比上一个元素小的情况下的那个下一个元素。
我们可以定义两个指针left和right,left指针从前面往后走,right指针从后面往前走,
如果left指向的元素大于下一个元素,那么最小值就是下一个元素;如果right指向的元素小于上一个元素,那么最小值就是right所值的元素。

import java.util.*;
import java.util.ArrayList;
public class Solution {
    public int minNumberInRotateArray(int [] array) {
        
        int left = 0;
        int right = array.length - 1;
        
        if(array[left]  < array[right])
            return array[left];     
        
        while(left < right){
            
            if(array[left] > array[left+1])
                return array[left+1];
            else if(array[right-1] > array[right])
                return array[right];
            else
                left++;
                right--;
        }
        return -1;
    }
}


全部评论

相关推荐

不亏是提前批,神仙打架,鼠鼠不配了
站队站对牛:现在92都报工艺岗了
投递韶音科技等公司7个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 14:00
不想多说了,什么逆天HR,还要教我礼貌😂
机械打工仔:这不纯傻卵吗,他还操心上别人老板了
投递BOSS直聘等公司7个岗位
点赞 评论 收藏
分享
Gaynes:查看图片
点赞 评论 收藏
分享
码农索隆:这种hr,建议全中国推广
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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