アレイおよび最低数ベクトルを回転させます

タイトル説明

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

問題解決のアイデア:

第一の方法:直接、アレイを横切る最小値を見つけます。

第二の方法:二分法、最小値を見つけるためにバイナリ検索を使用します。考慮すべき3つの例:1、配列[中期]>配列[高] この状況は、この場合には、ミッド右の特定の最小数の配列[3,4,5,6,0,1,2]に似ています。この時点で、アレイがインクリメントされるので、これら二つの数間の最小値となるよう、そのように低い=ミッド+ 1。

2、配列[中間] <配列[高]この状況は、配列[2,2,3,4,5,6,6]、次に必ずしもアレイの最小数[中間]または左半ばに類似しています、MID =ハイ ;

3、配列[中間] ==配列[高]  ハイ=高- 1。

コード:

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

}
}

私は高いarray.size(と誰か他の人のコードを見つけるためにここに参照する場合) - 見つかったベクトルを見つけるために使用する方法を見つけるために、彼らは1:00を与えられないと述べました

関数は、ベクトルの大きさのベクトルの大きさを返し、型size_typeを返し、メンバー型  size_typeは、  符号なし整数型、すなわち、符号なし整数です。

ベクトル<整数> A;

A.size() - 1サイズ戻り値は、符号なしの型があるため、それほどA.size() - 範囲外1、多数の

適切な使用(int型)(A.size() - 1)、できるように、

PS:Vectorクラスを自動的に増やすことができますJavaであるオブジェクトの配列を

  1. 容量

    それは保存することができる新たな記憶スペースの割当ての前に容器内の要素の総数を指します。

  2. サイズ

    これは、現在コンテナに格納された要素の数を指し

おすすめ

転載: www.cnblogs.com/9797ch/p/11206437.html