剑指offer8 旋转数组的最小数字

Posted 去做点事情

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer8 旋转数组的最小数字相关的知识,希望对你有一定的参考价值。

一种错误写法:

class Solution {
public:
    int minNumberInRotateArray(vector<int> rotateArray) {
        int length = rotateArray.size();
        if(length <= 0)
            return 0;
        if(rotateArray[0] == rotateArray[length-1] && rotateArray[0] == rotateArray[(length-1)/2]){
            int number = 0x7FFFFFFF;
            for(int i = 0;i < length;i++){
                if(rotateArray[i] < number)
                    number = rotateArray[i];
            }
            return number;
        }
        else if(rotateArray[0] < rotateArray[length-1]){
            return rotateArray[0];
        }
        else{
            int begin = 0;
            int end = length-1;
            while(begin < end){
                int mid = (begin + end)/2;
                if(rotateArray[mid] >= rotateArray[begin])
                    begin = mid;
                else if(rotateArray[mid] <= rotateArray[begin])
                    end = mid;
            }
            return rotateArray[begin];
        }
    }
};

如果只有两个数,begin < end就会陷入死循环

以上是关于剑指offer8 旋转数组的最小数字的主要内容,如果未能解决你的问题,请参考以下文章

《剑指Offer——旋转数组的最小数字》代码

剑指 Offer 11. 旋转数组的最小数字 的详细题解

剑指offer旋转数组的最小数字python

《剑指offer》— JavaScript旋转数组的最小数字

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

Java 剑指offer(10) 旋转数组的最小数字