所謂的上升子串,要求子序列連續。如對於[3,2,4,5,3,6] ,應當返回3,對應的最長子串爲[2,4,5]。
定義狀態變量dp[i]:包括nums[i]在內的最長子串長度。
狀態轉移函數: 如果則;否則
def maxAscendingArray(array):
dps = [1 for _ in range(len(array))]
maxLength = 1 # 記錄最長長度
maxEndIndex = 0 # 記錄最長對應的索引
for i in range(1, len(array)):
if array[i] > array[i-1]:
dps[i] = dps[i-1] + 1
if dps[i] > maxLength:
maxLength = dps[i]
maxEndIndex = i
return maxLength, array[maxEndIndex+1-maxLength:maxEndIndex+1]