日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Leetcode--300. 最长上升子序列

發(fā)布時(shí)間:2024/7/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Leetcode--300. 最长上升子序列 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

給定一個無序的整數(shù)數(shù)組,找到其中最長上升子序列的長度。

示例:

輸入: [10,9,2,5,3,7,101,18]
輸出: 4?
解釋: 最長的上升子序列是?[2,3,7,101],它的長度是 4。
說明:

可能會有多種最長上升子序列的組合,你只需要輸出對應(yīng)的長度即可。
你算法的時(shí)間復(fù)雜度應(yīng)該為?O(n2) 。
進(jìn)階: 你能將算法的時(shí)間復(fù)雜度降低到?O(n log n) 嗎?

思路:從后往前推,依次比較觀察

動態(tài)方程:if(dp[j]>dp[i])? dp[i]=max(dp[j],dp[j]+1)

提交的代碼:

class Solution {
? ? public int lengthOfLIS(int[] nums) {
? ? ? ? ? int n =nums.length;
?? ? ? ? ? ?int dp[] = new int[n];
?? ? ? ? ? ?int i,j,max=0;
?? ? ? ? ? ?for(i=n-1;i>=0;i--)
?? ? ? ? ? ?{
?? ? ? ? ? ??? ?dp[i]=1;
?? ? ? ? ? ??? ?for(j=i;j<=n-1;j++)
?? ? ? ? ? ??? ?{
?? ? ? ? ? ??? ??? ?if(nums[j]>nums[i])
?? ? ? ? ? ??? ??? ?{
?? ? ? ? ? ??? ??? ??? ?dp[i] = java.lang.Math.max(dp[i], dp[j]+1);
?? ? ? ? ? ??? ??? ?}
?? ? ? ? ? ??? ??? ?
?? ? ? ? ? ??? ?}
?? ? ? ? ? ??? ?max = java.lang.Math.max(max, dp[i]);
?? ? ? ? ? ?}
?? ? ? ? ? ?return max;
? ? }
}

完整的代碼:


public class Solution300 {
?? ? public static int lengthOfLIS(int[] nums) {
?? ? ? ? ? ?int n =nums.length;
?? ? ? ? ? ?int dp[] = new int[n];
?? ? ? ? ? ?int i,j,max=0;
?? ? ? ? ? ?for(i=n-1;i>=0;i--)
?? ? ? ? ? ?{
?? ? ? ? ? ??? ?dp[i]=1;
?? ? ? ? ? ??? ?for(j=i;j<=n-1;j++)
?? ? ? ? ? ??? ?{
?? ? ? ? ? ??? ??? ?if(nums[j]>nums[i])
?? ? ? ? ? ??? ??? ?{
?? ? ? ? ? ??? ??? ??? ?dp[i] = java.lang.Math.max(dp[i], dp[j]+1);
?? ? ? ? ? ??? ??? ?}
?? ? ? ? ? ??? ??? ?
?? ? ? ? ? ??? ?}
?? ? ? ? ? ??? ?max = java.lang.Math.max(max, dp[i]);
?? ? ? ? ? ?}
?? ? ? ? ? ?return max;
?? ? ? ?}
?? ? public static void main(String[] args)
?? ? {
?? ??? ?int[] nums = {10,9,2,5,3,7,101,18};
?? ??? ?// int[] nums = {1,2};
?? ??? ? System.out.println(lengthOfLIS(nums));
?? ? }
}
?

總結(jié)

以上是生活随笔為你收集整理的Leetcode--300. 最长上升子序列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。