問題の配列(Java実装)

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を返します。
    } 
}

 

 

 

おすすめ

転載: www.cnblogs.com/youdiaodaxue16/p/11359136.html