給定乙個未排序的整數陣列,找到最長遞增子串行的個數。
示例 1:
輸入: [1,3,5,4,7]
輸出: 2
解釋: 有兩個最長遞增子串行,分別是 [1, 3, 4, 7] 和[1, 3, 5, 7]。
示例 2:
輸入: [2,2,2,2,2]
輸出: 5
解釋: 最長遞增子串行的長度是1,並且存在5個子序列的長度為1,因此輸出5。
注意: 給定的陣列長度不超過 2000 並且結果一定是32位有符號整數。
動態規劃
現在問題是求最長遞增序列的個數,我們維護兩個陣列
len[i],存放以i為遞增序列尾部元素的最長序列長度(注意是最長序列)
cnt[i],存放以i為遞增序列尾部元素的最長序列個數(注意是最長序列)
用乙個雙重迴圈,對於每乙個數num[i],試試能不能從i之前的數找到乙個遞增序列。
比如:1 2 3 5 4 7
對於4,在前面的數中和4構成遞增序列的有1,2,3,然後分析以1,2,3為結尾的最長序列長度,其中選擇乙個最長的然後加一作為當前的最長序列長度,如果最長序列有多個,那麼當前的最長序列個數就是前面幾個最長序列長度的和。
class
solution
else
if(len[i]
==len[j]+1
)}}}
int max_len=
0,res=0;
for(
int t:len)max_len=math.
max(max_len,t)
;for
(int i=
0;ireturn res;
}}
leetcode 673 最長遞增子串行的個數
給定乙個未排序的整數陣列,找到最長遞增子串行的個數。示例 1 輸入 1,3,5,4,7 輸出 2 解釋 有兩個最長遞增子串行,分別是 1,3,4,7 和 1,3,5,7 示例 2 輸入 2,2,2,2,2 輸出 5 解釋 最長遞增子串行的長度是1,並且存在5個子序列的長度為1,因此輸出5。分析 舉個...
LeetCode 673 最長遞增子串行的個數
給定乙個未排序的整數陣列,找到最長遞增子串行的個數。示例 1 輸入 1,3,5,4,7 輸出 2 解釋 有兩個最長遞增子串行,分別是 1,3,4,7 和 1,3,5,7 示例 2 輸入 2,2,2,2,2 輸出 5 解釋 最長遞增子串行的長度是1,並且存在5個子序列的長度為1,因此輸出5。dp i ...
leetcode673 最長遞增子串行的個數
題目 這道題有點貪心?最優規劃?動態規劃?我也不知道叫啥了。就是從前往後算,後者的計算需要用到前者的值 原本想法,找到各個點的當前最長長度,找到最長的幾個值,然後倒推,後來覺得倒推太費時間,能不能在取最長值的時候,就把解拿到 就有了下面的 如果只要求最長長度 只需要int maxs new int ...