LeetCode300 最長遞增子串行

2022-06-07 15:00:12 字數 1173 閱讀 5285

☆☆☆☆思路:本題是經典的lis問題。兩種解法,動態規劃 和 二分查詢。

方法1:動態規劃。時間複雜度為o(n^2)

方法2:二分查詢,時間複雜度為o(nlogn)

【舉一反三】:(1)該題為不連續的情況,延伸求最長連續遞增子串行長度,見leetcode674. 最長連續遞增序列

(2)除了要會求子序列的長度,還要會求出最長的子串行是什麼

**1:動態規劃

class

solution

}res = math.max(res, dp[i]); //

所有dp[i]中取最大的

}

return

res;}}

private

int generatelis(int

nums) }}

//step1. 遍歷dp陣列,找到最大值以及位置;

int len = 0; //

最大值,也即最長遞增子串行的長度

int index = 0;

for (int i = 0; i < dp.length; i++)

}int lis = new

int[len];

lis[--len] = nums[index]; //

最長遞增子串行以nums[index]結尾

//step2. 每次從右向左遍歷,尋找當前數的前乙個數(滿足1.比當前數的值小;2.比當前數對應的dp值小1)

for (int i = index - 1; i >= 0; i--)

}return

lis;

}

**2:二分查詢m

LeetCode 300 最長遞增子串行

300.最長遞增子串行 我們記狀態 dp i dp i dp i 表示以第 i ii 個元素結尾的最長上公升子串行的長度,那麼專一方程就可以定義為 dp i m ax d p j 1 0 j ndnu ms j ms i dp i max dp j 1 0 leq jdp i max dp j 1 ...

LeetCode300 最長遞增子串行

題目鏈結 題目描述 給你乙個整數陣列 nums 找到其中最長嚴格遞增子串行的長度。子串行是由陣列派生而來的序列,刪除 或不刪除 陣列中的元素而不改變其餘元素的順序。例如,3,6,2,7 是陣列 0,3,1,6,2,2,7 的子串行。示例 輸入 nums 10,9,2,5,3,7,101,18 輸出 ...

leetcode 300 最長遞增子串行

思路,動態規劃 狀態含義 dp i 第i個元素所表示的最大的遞增序列長度 轉移方程 第i個是否可以放在第j個後面 1.可以放,dp i max dp i dp j 1 2.不可以放,跳過 遍歷dp找最大 class solution max max max,dp i return max inclu...