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

 上記の問題をオフ牛のこの道は、アレイ内の最小値を検索することです。私たちは、回転配列である、質問の意味を知ることができます。だから我々は、回転する配列が何であるかを理解しておく必要があります。実際には、良い配列は、回転操作権の数を行いました。だから我々は、中の質問の意味を取得します。この配列は、非減少配列のアレイです。その後、我々は注文した配列です。この配列のより承知しているであろう。もちろん、我々は回数を見つけたいです。私たちが最初に考えた分半を見つけることです。だからここに私はあなたのコードのCPLUS方法を提供します。これは、分半を見つけるための良い方法です。

C ++のメソッドが質問を行います

クラスソリューション{
パブリック:
INT minNumberInRotateArray(ベクトル<整数> rotateArray){
IF(rotateArray.size()== 0)戻り0;
int型の低= 0;
INTハイ= rotateArray.size() - 1;
一方(低<高){
int型ミッド=(低+高)/ 2。
IF(rotateArray [中間]> rotateArray [高])
低い=ミッド+1。
そうであれば(rotateArray [中間] == rotateArray [高]){
高=高- 1。
}
他の
高=ミッド;
}
rotateArray [低]を返します。
}
}。

その後、私はあなたの配列を取得するために強引な方法で配列のjavaのトラバーサルを提供与えます。この質問は、メインアプローチやアイデアです。この質問は、私たちは最小値を求めるために、主のためです。そして、私たちは法律で見つけ、あなたは一般的に、配列の位置は、任意の場所で最小で知ることができます。以下は、直接コードに、言うことはありません。

Javaのタイトルを行うための強引な方法

輸入はjava.util.ArrayList;
パブリッククラスのソリューション{
公共のint minNumberInRotateArray(INT []配列){
int型J = Array.lengthと。
(J == 0)が0を返す場合。
INT RES =配列[0]。
以下のために(INT i = 0; iは<Array.lengthと- 1; iは++){
IF(配列[I]>配列[I + 1]){
RES =配列[I + 1]。
ブレーク;
}
}
RESを返します。

}
}

そして、大多数のユーザーに感謝するために、今私はJavaでそれをやっているし、その後法律を刻まれました。

輸入はjava.util.ArrayList;
パブリッククラスのソリューション{
公共のint minNumberInRotateArray(INT []配列){
int型高= Array.lengthと。
(高い== 0)が0を返す場合。
INT RES =配列[0]。
int型の低= 0;
高い=高-1;
int型の半ば。
一方(低<高){
半ば=(低+高)/ 2。
(配列[中間] <=配列[高])であれば、高1 =ハイ。
他の低=ミッド+ 1;
}
戻り配列[低]。
}
}

あなたが意志知っていればここで私はいくつかの単語を言いたい、それがあれば、実際の動作です。時間のかかるまたはC ++コードのフットプリントがあるかどうかは、Javaよりも小さいですが、いくつかのプログラムははるかに小さいです。C ++のコードでは、非常に強力な方法です。

おすすめ

転載: www.cnblogs.com/littleswan/p/11311892.html
おすすめ