尋找最長遞增子序列 的兩方法效率比較

方法一:直接DP (時間複雜度O(n^2) 空間複雜度 O(2n))

 

方法二:二分 (時間複雜度O(nlongn) 空間複雜度O(n))

 

思路:每讀入一個數據與棧頂元素比較,

         如果小於棧頂元素,直接入棧,

         如果大於等於棧頂元素,調用二分查找棧中元素第一個比當前輸入的元素大的棧內元素

                 用當前元素替換棧內找到的元素

         輸出棧的高度即爲LIS的長度

 

 

由此可見無論是時間還是空間用二分法計算的結果都比dp要好

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章