(:入力配列を変更することが許可されていない添付):すべての数は、N-1の範囲0にある長さの配列N、で提供する(Java Editionの)最初のタイトルを獲得。一部のデジタル配列が重複しているが、各回数が数回繰り返したかわからない、繰り返し何の数字かわかりません。*任意の数の配列の繰り返しを探します。*例えば、入力アレイ7 {2、3、1、0、2、5、3}の長さがあれば、対応する出力は繰り返し数2又は3です。追加の条件:入力配列を変更することはできません。

/ *すべての数は、n-1の範囲0であるn個の配列のいずれかの長さ。
*特定の番号は、アレイ内で繰り返されているが、それぞれの数は数回繰り返したかわからない、繰り返し何の数字かわかりません。
*任意の数の配列の繰り返しを探します。
*例えば、入力アレイ7 {2、3、1、0、2、5、3}の長さがあれば、対応する出力は繰り返し数2又は3です。
*!追加の条件:入力配列を変更することはできません。
* /

輸入java.utilの。*;

Class1sクラス{パブリック

静的クラスfindRepeatedNumber {
公共のint findRepeatedNumber(INT [] A){
// Arrayには問題があるか否かを判定する
(A == NULL || a.length <= 0){IF
のSystem.out.println(「入力配列エラー「);!
でSystem.exit(0);
戻り-1;
}
番号の//配列は、問題があるか否かが判定される
I <a.length; I ++){(INT I = 0
IF([Iが] <0 || [I]> a.length){
のSystem.out.println() "デジタルアレイ異常!";
でSystem.exit(0);
戻り-1;
}
}
//決意を見つけると現存する数字の繰り返し配列は、入力配列を変更することはできません。
開始1 = INT;
INT =エンドa.length;
INTミドル= 0;
ながら(開始<=エンド){
ミドル= 2 /(エンド+始める);
INT calcuNumber数=(A、開始、中央)。
IF(==端を始める){
IF(数> 1){
戻り始める- 1。
}他{
リターン-1。
}
}
もし(数>中央-始める+ 1){
端=中間、
}他{
始める= 1 +真ん中。
}
}
のSystem.out.println( "数组中没有找到重复的数字!");
-1を返します。
}
公共INT calcuNumber(INT [] A、INT B、int型のC){
int型の数= 0。
以下のために(INT I 0 =; I <a.length; I ++){
IF(([I]> = B)&&([I] <= C)){
数++。
}
}
番号を返します。
}
}
パブリック静的無効メイン(文字列[] args){
// TODO自動生成方法スタブ
//输入一个数组。
INT [] = {A1 4,2 ,. 1 ,. 3,2 ,. 5、2};
findRepeatedNumber新しい新しいfindRepeatedNumberをfrn1 =();
//は、任意の数の出力繰り返す:
INT = R&LT frn1.findRepeatedNumber(A1)を、
IF( R&LT> -1){
するSystem.out.println( "番号の配列が繰り返される:" A1 + [R&LT]);
}
}
}

おすすめ

転載: www.cnblogs.com/zhuozige/p/12367735.html