整数のソートされていない配列を指定して、最長の増加部分列の長さを見つけます。
例:
入力:[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; } }