zoukankan      html  css  js  c++  java
  • 数据结构-旋转数组的最小数字

    题目:把一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转。输入一个递增排序的数组的一个旋转,数组其最小值。例如数组[3,4,5,1,2]是[1,2,3,4,5]的一个旋转,其最小值为1

    /*
    剑指offer面试题8.
    这段代码针对一般情况,但是如果数组是[1,0,1,1,1]或者是[1,1,1,0,1]
    这个代码就有很大的漏洞,这时候需要考虑这种情况,需要利用顺序查找。
    */
    #include <iostream>
    
    using namespace std;
    
    int min(int* a,int low,int high){
        int mid = low;
        while(high >= low){
            mid = (low + high)/2;
            if((high - low) == 1){
                mid = high;
                break;
            }
            if(a[mid] >= a[low]){
                low = mid;
            }
            if(a[mid] <= a[high]){
                high = mid;
            }
        }
    
        return a[mid];
    }
    
    int main()
    {
        int a[] = {7,8,9,3,4,5,6};
        int n = sizeof(a)/sizeof(*a);
    
        int m = min(a,0,n-1);
    
        cout << m;
    
        return 0;
    }
  • 相关阅读:
    iOS
    iOS
    ios
    iOS
    ios
    ios
    iOS
    ios
    常用NSString的方法
    instancetype
  • 原文地址:https://www.cnblogs.com/wn19910213/p/3718418.html
Copyright © 2011-2022 走看看