アルゴリズム_最長上昇サブシーケンス(js)

4568 ワード

力ボタン300.最長上昇サブシーケンスは、無秩序な整数配列を与え、最長上昇サブシーケンスの長さを見つけます.
例1
入力:[10,9,2,5,3,7101,18]出力:4解釈:最も長い上昇サブシーケンスは[2,3,7101]であり、その長さは4である.
説明:最長上昇サブシーケンスの組み合わせが複数ある可能性があります.対応する長さを出力するだけでいいです.あなたのアルゴリズムの時間的複雑さはO(n 2)であるべきです.ステップアップ:アルゴリズムの時間的複雑さをO(n log n)に下げることができますか?二分法を用いて解くことができ,本編はしばらく使わない
動的計画解題時間複雑度O(n^2)
 var lengthOfLIS = function(nums) {
     let dp = new Array(nums.length).fill(1) //   dp,    1,          
                for (let i = 0; i < nums.length; i++) {
                    for (let j = 0; j < i; j++) {
                        if(nums[i] > nums[j]){
                            dp[i] = Math.max(dp[i], dp[j] + 1) 
                        }
                    }
                }
                var i = 0
                var max = 0
                while(i < nums.length){ 
                    max = Math.max(dp[i], max)
                    i++
                }
                return max
};

本題の解法はすでにアップロードして、すぐにジャンプします
本題は力ボタンに由来し、より多くの解題構想は本題に飛び込んでください.