首页 > 其他 > 详细

LintCode Find Minimum In Rotated Sorted Array

时间:2016-05-14 07:53:11      阅读:236      评论:0      收藏:0      [点我收藏+]

1. 画图, 直观。

2. 讨论数组为空或者个数为零。

3. 讨论首尾, 若为翻转过的则进行查找直到最后两个数进行比较, 取小者。

public class Solution {
    /**
     * @param num: a rotated sorted array
     * @return: the minimum number in the array
     */
    public int findMin(int[] num) {
        // write your code here
        if(num == null || num.length == 0) return -1;
        
        
        // int small = num[0];
        // for(int i = 1; i < num.length; i++) {
        //     //small = (small < num[i]) ? small : num[i];
        //     if(small > num[i]) small = num[i];
        //     else small = small;
        // }
        // return small;
        
        int left = 0; int right = num.length - 1; 
        if(num[left] < num[right]) return num[left];
        else{
           while(left + 1 < right){
            int mid = (left + right) / 2;
            if(num[left] < num[mid]){
                left = mid;
            }
            if(num[left] > num[mid]){
                right = mid;
            }
           }
        
            if(num[left] < num[right]) return num[left];
            else return num[right]; 
        }
    }
}

 

LintCode Find Minimum In Rotated Sorted Array

原文:http://www.cnblogs.com/LittleAlex/p/5491842.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!