尋找 Python 中最長遞增子序列長度的程式
假設我們有一系列數字。我們必須找到最長遞增子序列的長度。因此,如果輸入類似於[6, 1, 7, 2, 8, 3, 4, 5],則輸出將為 5,因為最長的遞增子序列是[2,3,4,5,6]。
為了解決這個問題,我們將遵循以下步驟:
建立一個名為 tails 的陣列,其大小與 nums 相同,並用 0 填充它。
size := 0
對於 nums 陣列中的每個元素 x:
i := 0, j := size
當 i 與 j 不相同時,
mid := i + (j – i)/2
如果 tails[mid] < x,則 i := mid + 1,否則 j := mid
tails[i] := x
size := i + 1 和 size 中的最大值
返回 size。
讓我們看看下面的實現以獲得更好的理解:
示例
class Solution(object): def solve(self, nums): tails =[0 for i in range(len(nums))] size = 0 for x in nums: i=0 j=size while i!=j: mid = i + (j-i)//2 if tails[mid]> x: i= mid+1 else: j = mid tails[i] = x size = max(i+1,size) return size ob = Solution() nums = [7, 2, 8, 3, 9, 4, 5, 6] print(ob.solve(nums))
輸入
[7, 2, 8, 3, 9, 4, 5, 6]
輸出
5
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP