給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。
示例:輸入: [10,9,2,5,3,7,101,18]
輸出: 4
解釋: 最長的上公升子串行是 [2,3,7,101],它的長度是 4。
說明:可能會有多種最長上公升子串行的組合,你只需要輸出對應的長度即可。
你演算法的時間複雜度應該為 o(n2) 。
高階: 你能將演算法的時間複雜度降低到 o(n log n) 嗎?
動態規劃,時間複雜度o(n^2)。定義狀態dp[i]表示以nums[i]結尾的最長上公升子串行的值,初態dp[0] = 0,狀態轉移方程為:
dp[i] = max(dp[j]) + 1 for j from 0 to i-1 && nums[j] < nums[i]
所求答案為:
max(dp[i]) for i from 0 to dp.size()
int lengthoflis(vector& nums)
} }return *max_element(dp.begin(), dp.end());
}
動態規劃LeetCode300最長上公升子串行
在做這道題之前,我們先看一下什麼是子串行。區分子串和子串行 給定 pwwkew 子串是pww,wwk等很多個子串 是連在一起的 子串行是 pwk,pke等很多個子序列 但是子串行中的字元在字串中不一定是連在一起的。題目描述 給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。示例 輸入 10,9...
leetcode 動態規劃
題目如下 給定乙個整型陣列,至少有乙個元素,請計算子陣列最大乘積是多少?子陣列必須是原陣列中連續的一串數字構成的陣列。整數可正可負。例如 給定陣列 2,3,2,4 經過計算,得到最大乘積為6。子陣列為 2,3 根據原貼的解題思路,這道題可以用動態規劃來解,但難度在 呢?負負得正,就可惡在這裡。那這個...
Leetcode 動態規劃
題目 原題鏈結在這裡 最長字串鏈。給乙個單詞列表,找乙個詞鏈,使得詞鏈後乙個單詞由前乙個單詞增加乙個字元得到,求最長詞鏈長度。解答 1 根據詞鏈的定義,短的單詞可以由長的單詞減去單詞中乙個字元得到。因此可以先對單詞列表,按照單詞的長度從大到小排序。2 單詞的最大長度為 16,因此可以對於每個單詞 w...