剑指offer--旋转数组中的最小数字

旋转数组的最小数字

http://www.nowcoder.com/questionTerminal/9f3231a991af4f55b95579b44b7a01ba

解法

  1. 可以使用暴力解题 直接遍历一次 时间复杂度是O(n)
  2. 使用二分的变形,把右端点当成target,然后每次进行比较 如果array[mid] <=target 就把右端点变成mid 否者就是left 变成mid+1
import java.util.ArrayList;
public class Solution {
    public int minNumberInRotateArray(int [] array) {
        int right = array.length-1;
        int left = 0;
        int target = array[right];
        while(left<right ){
            int mid = (left+right)/2;
            if(array[mid] <= target){
                right = mid ;
                target = array[mid];
            }else if (array[mid]>target){
                left = mid+1;
            }else{
                left++;
            }
        }
        return target;
    }
}
全部评论

相关推荐

03-24 17:57
门头沟学院 Java
yakuso:你这头像哈哈哈
点赞 评论 收藏
分享
03-10 10:57
已编辑
门头沟学院 推荐算法
夜夜还好:我们学校说为了学生就业,更新了课程,我今天大二,上学期在学jsp,html,这学期上来工程实践,要求用springboot+vue,说什么这些技术要我们提前自己准备,要不你把学费还我吧,我给b站充个会员,人家教的比你多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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