1. 程式人生 > 其它 >【每日一題】2021年12月2日-300. 最長遞增子序列

【每日一題】2021年12月2日-300. 最長遞增子序列

給你一個整數陣列 nums ,找到其中最長嚴格遞增子序列的長度。

子序列是由陣列派生而來的序列,刪除(或不刪除)陣列中的元素而不改變其餘元素的順序。例如,[3,6,2,7] 是陣列 [0,3,1,6,2,2,7] 的子序列。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/longest-increasing-subsequence
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

答案:動態規劃/貪心+二分

class Solution {
    public int lengthOfLIS(int[] nums) {
        
if(nums.length == 0) { return 0; } int[] dp = new int[nums.length]; int maxRes = 1; //初始化為1而非0 dp[0] = 1; for(int i = 1; i < nums.length; i++) { dp[i] = 1; //每個元素的初始值都為1 for(int j = 0; j < i; j++) { //小於i的元素 if(nums[j] < nums[i]) { //
在前面發現比當前元素小的 dp[i] = Math.max(dp[i], dp[j] + 1); //更新當前元素對應的值的小的值+1 } } maxRes = Math.max(maxRes, dp[i]); //每個數比較取最大值 } return maxRes; } }

本文來自部落格園,作者:劉金輝,轉載請註明原文連結:https://www.cnblogs.com/liujinhui/p/15635010.html