勝利オファー-6。アレイの回転の最小数(C ++ / Java)の

トピック:

いくつかの要素の配列の先頭には、配列、我々は回転呼んで配列の最後に移動しました。
出力回転最小の素子アレイの回転の入力配列の非降順。
例えば、配列{3,4,5,1,2}、{1,2,3,4,5}は最小のアレイの回転です。
注:配列のサイズは、リターン0 0である場合、すべての要素は、0よりも大きいに記載されています。

分析:

153でこの質問とLeetCode、154は同じです。アレイ素子153は単に重複する要素が存在する154の配列を可能にするために、重複していません。

ここで、アレイは、直接入力要件の非降順であるので154と同じ問題です。

アレイは、最小回転が配列(C ++)をソート見つける回転さソートにおける最小のLeetCode 153検索

LeetCode 154はII(C ++)を回転ソートされた配列内の最小値を見つけるために回転ソートアレイIIで最小値を探します

分析は、会場を確認するために、被験者の観点から153154を分析する必要があるかもしれません。

手順:

C ++

クラス解決{
 パブリックINT minNumberInRotateArray(ベクトル< INT > rotateArray){
         場合(rotateArray.empty())
             戻り 0 リターンのfind(rotateArray、0、rotateArray.size() - 1 )。
    } 
    int型の検索(ベクトル< INT >&NUMS、INT L、int型R){
         場合(NUMS [L] <NUMS [R] || L == R)
             戻りNUMS [L]。
        INT半ば= L +(R - L)/ 2 リターン分(検索(NUMS、L、MID)、検索(NUMS、ミッド+ 1 、R)); 
    } 
}。

ジャワ

輸入はjava.util.ArrayList;
輸入 java.utilの。* ;
パブリック クラスソリューション{
     公共 のint minNumberInRotateArray(INT []配列){
         場合(Array.lengthと== 0 戻り 0 ;
        戻り検索(アレイ、0、Array.lengthと-1 )。
    } 
    公共 int型の検索(INT []配列、int型の L、int型R){
         もし(配列[L] <配列[R] || L == R)
             戻り配列[L]。
        int型ミッド= L +(R - L)/ 2 リターン Math.min(検索(アレイ、L、MID)、(見つけるアレイ、中間+ 1 、R)); 
    } 
}

 

おすすめ

転載: www.cnblogs.com/silentteller/p/11832273.html