[LC] 300最長増加サブシーケンス

整数のソートされていない配列を指定して、最長の増加部分列の長さを見つけます。

例:

入力:[10,9,2,5,3,7,101,18]
出力:4
説明:最長増加サブシーケンスであり[2,3,7,101]、したがって、長さ4

注意:

  • あなたは長さを返すことが必要なだけである、複数のLISの組み合わせがあるかもしれません。
  • あなたのアルゴリズムはOで(実行する必要がありN2)の複雑さを。

フォローアップ:あなたはOにそれを改善する(でしたN  ログ  N)時間複雑?

時間:O(N ^ 2) 
クラスソリューション{
     公共 のint lengthOfLIS(INT [] NUMS){
         場合(NUMS == NULL || nums.length == 0 ){
             戻り 0 
        }
        INT [] ARR = 新しい int型[nums.length]。
        int型のres = 0 ;
        以下のためにINT ; I <nums.length; iが0 = I ++ ){
            ARR [I] = 1 INT J = 0; J <I、J ++ ){
                 場合(NUMS [J] < NUMS [I]){
                     // ノートどちら+ 1 
                    ARR [I] = Math.max(ARR [I]、ARR [ J] + 1 )。
                }
            }
            RES = Math.max(RES、ARR [I])。
        }
        リターンのres;
    }
}

 

おすすめ

転載: www.cnblogs.com/xuanlu/p/12041687.html