2次元配列を探す<A>
タイトル説明
(同一の各一次元アレイの長さ)は、上から下に増加する順に、二次元アレイの各列を並べ替えるために、昇順ソートの順に左から右に、各行。完全な機能、例えば、二次元アレイと整数を入力し、配列の整数が含まれているか否かが判断されます。
コードは以下の通りであります:
パブリッククラスのソリューション{ パブリックブール検索{(INTターゲットは、[] []配列INT) {(; iがArray.lengthとを<I ++は、I = 0の整数)のための jは、1 - (int型J =配列[0] .LENGTHために> = 0; J - ){ IF(配列[I] [J]>ターゲット){//取值和目标整数相比较! j--。 }そうであれば(配列[I] [J] <ターゲット){ I ++。 }他に trueを返します。 } } falseを返します。 } }
上記の試験方法を渡し、それは時間の複雑さの原因である可能性があります。
コードは以下の通りである:(行列の左下隅から完璧なスタート)
{ソリューションクラス公開 パブリックブール検索(目標INT、[] []配列をINT){ int型LEN BE Array.lengthと= - 1; //行 I = 0 INT; //カラム (I> = 0 &&をlenのながら <配列[ 0] .LENGTH){//行がゼロよりも大きい場合は、列が配列の全長未満である 場合(配列[LEN] [I ]>ターゲット){// 目標値と整数の比較! len--; }そうでなければ(配列[LEN] [I] <ターゲット){IF Iが++; }そうでない 真に戻る; } 偽に戻り; } }
コードは以下の通りである:(行列の右上から完璧なスタート)
{ソリューションクラス公開 パブリックブール検索(目標INTが、INT [] []配列){ int型LEN = 0; //行 INT I =配列[0] .LENGTH - 1; // 行 一方(LEN <Array.lengthと&& I> = 0){//行がゼロよりも大きい場合、列には、配列の全長未満である 場合(配列[LEN] [I ]>ターゲット){// 目標値と整数の比較! i--; }そうIF(配列[LEN] [I] <ターゲット){ LEN ++; }他の 真のリターン; } 偽に戻り; } }
<二>配列番号の重複
タイトル説明
アレイにおけるnの長さの全ての数は、n-1の範囲は0です。一部のデジタル配列が重複しているが、重複しているどのように多くの番号がわかりません。各桁が数回繰り返されるか分からないのです。重複した数字のいずれかの配列を見つけてください。例えば、もし入力アレイ7 {2,3,1,0,2,5,3}の長さは、第2の繰り返し桁の対応する出力。
コードは以下の通りであります:
輸入はjava.util.HashSet。 パブリッククラスのソリューション{ //パラメータ: //番号:整数のアレイ 配列番号の長さ://長 //複製:(出力)配列番号に複製数、複製配列の長さが1であるので、重複を使用[0] =?実装では、 //ここではC / C ++、重複でpointorのような重複C / C [0]等しい*重複++ //这里要特别注意〜返回任意重复的一个、赋值重複[0] 値を返します//:入力の場合はtrue有効な、そしていくつかの重複は、配列番号である 。//そうでない場合はfalse パブリックブール複製(INT番号[]、int型の長さ、[]複製をINT){ IF(長さ<= 0){ falseを返します。 } HashSetの<整数> SE =新しいHashSetの<>(); 以下のために(INT i = 0; iは長さ<; iは++){ IF(se.contains(番号[I])){ 重複[0] =番号[I]; trueを返します。 }他{ se.add(番号[I])。 } } falseを返します。 } }
<スリー>建設製品アレー
タイトル説明
アレイA所与[0,1、...、N-1]、配列Bを[0,1、...、N-1] Bが要素Bであり、[I] = A [構築してください。 0] * A [1] * ... * A [I-1] * A [I + 1] * ... * A [N-1]。あなたは分裂を使用することはできません。
輸入はjava.util.ArrayList; パブリッククラスのソリューション{ 公共のint []多重(INT [] A){ int型のlen = A.length。 INT [] B =新しいINT [LEN]。 int型RES = 1; 以下のために(INT i = 0; I <LEN; RES * = A [I ++]){ B [i]は=のRES。 } のRES = 1。 (INT J = LEN - 1; J> = 0; * = A [J - ] RES)のために{ B [j] * = RESを。 } Bを返します。 } }