zoukankan      html  css  js  c++  java
  • 面试题11:旋转数组的最小数字

    本题考察的是查找,需要注意的是数组中有相同数字的特例,如果不能很好地处理这些特例,就很难写出让人满意的完美代码。

    C++版本

    #include <iostream>
    #include <vector>
    using namespace std;
    
    int minInOrder(vector<int> rotateArray, int index1, int index2){
        int result = rotateArray[index1];
        for(int i = index1 + 1; i <= index2; i++){
            if(result > rotateArray[i]){
                result = rotateArray[i];
            }
        }
        return result;
    }
    
    int minNumberInRotateArray(vector<int> rotateArray){
        int index1 = 0;
        int index2 = rotateArray.size()-1;
        int indexMid = index1;
        while(rotateArray[index1] >= rotateArray[index2]){
            if(index2 - index1 == 1){
                indexMid = index2;
                break;
            }
            indexMid = (index1 + index2)/2;
            if(rotateArray[index1]==rotateArray[index2]&&rotateArray[indexMid]==rotateArray[index1])
                return minInOrder(rotateArray, index1, index2);
            if(rotateArray[indexMid] >= rotateArray[index1]){
                index1 = indexMid;
            }
            else if(rotateArray[indexMid] <= rotateArray[index2]){
                index2 = indexMid;
            }
        }
        return rotateArray[indexMid];
    }
    
    
    int main(){
        int a[5] = {1,2,3,4,5};
        cout<<&a[2]<<" "<<&a[3]<<endl;
        cout<<Fibonacci(6)<<endl;
        return 0;
    }
    
    
  • 相关阅读:
    02-最简C语言程序
    Go学习笔记-GO编程语言手册
    Go学习笔记-Effective Go
    go学习笔记-语法
    机器学习-数据挖掘
    windows下jupyter notebook的安装及配置
    wpf学习笔记
    windows下安装mingW及控制台启用
    nginx
    MFC学习笔记
  • 原文地址:https://www.cnblogs.com/flyingrun/p/13324864.html
Copyright © 2011-2022 走看看