最長上公升子串行一定是與次長自序列有關係的,因此可以考慮使用動態規劃解題。
狀態定義
dp[i]
表示以nums[i]
結束的最長上公升子串行長度
規劃過程
需要考慮兩種情況:
但存在這樣的情況,nums[i]
前面存在多個比他小的元素,j,k,l
,此時應該是對三個進行對比,選擇最大的:
dp[i]
=max
(dp[j]+1
, dp[k]+1
, dp[l]+1
)
具體**為:
for j:=
0; j}
綜上,題解**為:
func
lengthoflis
(nums [
]int
)int
dp :=
make([
]int
,len
(nums)
) result :=
1for i:=
0; i<
len(nums)
; i++
} result =
max(result, dp[i])}
return result
}func
max(a, b int
)int
return b
}
劍指offer01 替換空格
如下 coding utf 8 class solution s 源字串 defreplacespace self,s write code here s s.replace 20 起初我是這樣寫的 輸出結果就和原來的s相同 因為python中的字串不可變 所以必須重新賦給乙個變數 s1 s.rep...
劍指offer 01 二維陣列的查詢
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。由題意知,陣列是有序的,既然有序就可以不用雙重迴圈找值 考慮中間值,即若大於往 找,若小於則往 找 得出最左下...
劍指offer 01二維陣列中的查詢
二叉排序樹的定義 二叉排序樹,又稱為二叉查詢樹。它或者是一顆空樹,或者具有下列性質的二叉樹。若它的左子樹不空,則左子樹上所有節點的值均小於它的根節點的值 若它的右子樹不空,則右子樹上所有節點的值均大於它的根節點的值 它的左 右子樹也分別為二叉排序樹。這種樹模式下的搜尋途徑可以遍歷或預判所有可能性 比...