Leetcode 300 最長上公升子串行

2022-06-12 15:39:12 字數 1093 閱讀 5927

分治解法:

public

final

int lengthoflis(int

nums)

return

re; }

/*** @author niuxy

* @date 2020/7/6 11:15 下午

* @description 暴力法需要遍歷以每個元素為頭元素的最長陣列的長度

* 問題間存在遞迴關係,且存在大量重複計算

* g(i) 為以第 i 個元素為頭元素的最長遞增陣列的長度

*/public

final

int lengthoflis(int nums, int begin, int

cache)

if (cache[begin] != 0)

int maxlength = 1;

for (int i = begin + 1; i < nums.length; i++)

maxlength = math.max(maxlength, lengthoflis(nums, i, cache) + 1);

}cache[begin] =maxlength;

return

maxlength;

}

dp 解法,即分治轉為遞推表示:

public

final

int lengthoflisdp(int

nums)

int re = 1;

int cache = new

int[nums.length];

cache[nums.length - 1] = 1;

for (int i = nums.length - 2; i >= 0; i--)

cache[i] = math.max(cache[i], cache[j] + 1);

}re =math.max(cache[i], re);

}return

re; }

LeetCode300 最長上公升子串行

給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。示例 輸入 10,9,2,5,3,7,101,18 輸出 4解釋 最長的上公升子串行是 2,3,7,101 它的長度是4。說明 題目分析 方法一 動態規劃,用dp i 表示以nums i 結尾的最長上公升子串行。那麼如何求dp i 呢,只要看n...

Leetcode 300 最長上公升子串行

給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。示例 輸入 10,9,2,5,3,7,101,18 輸出 4解釋 最長的上公升子串行是 2,3,7,101 它的長度是4。說明 高階 你能將演算法的時間複雜度降低到 o n log n 嗎?解題思路 1.普通演算法 動態規劃。假設陣列的前n個數...

leetcode 300 最長上公升子串行

給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。示例 輸入 10,9,2,5,3,7,101,18 輸出 4解釋 最長的上公升子串行是 2,3,7,101 它的長度是4。說明 高階 你能將演算法的時間複雜度降低到 o n log n 嗎?解法1 動態規劃空間複雜度o n 時間複雜度o n 2...