package array; /** * @ProjectName: leetcode * @Package: array * @ClassName: Array300 * @Author: markey * @Description:300. æé¿ä¸åååºå * ç»å®ä¸ä¸ªæ åºçæ´æ°æ°ç»ï¼æ¾å°å ¶ä¸æé¿ä¸åååºåçé¿åº¦ã * * 示ä¾: * * è¾å ¥: [10,9,2,5,3,7,101,18] * è¾åº: 4 * è§£é: æé¿çä¸åååºåæ¯Â [2,3,7,101]ï¼å®çé¿åº¦æ¯ 4ã * 说æ: * * å¯è½ä¼æå¤ç§æé¿ä¸åååºåçç»åï¼ä½ åªéè¦è¾åºå¯¹åºçé¿åº¦å³å¯ã * ä½ ç®æ³çæ¶é´å¤æåº¦åºè¯¥ä¸ºÂ O(n2) ã * è¿é¶: ä½ è½å°ç®æ³çæ¶é´å¤æåº¦éä½å°Â O(n log n) å? * * æ¥æºï¼åæ£ï¼LeetCodeï¼ * 龿¥ï¼https://leetcode-cn.com/problems/longest-increasing-subsequence * è使å½é¢æ£ç½ç»ææãåä¸è½¬è½½è¯·èç³»å®æ¹ææï¼éåä¸è½¬è½½è¯·æ³¨æåºå¤ã * @Date: 2020/3/14 10:04 * @Version: 1.0 */ public class Array300 { public int lengthOfLIS(int[] nums) { int[] dp = new int[nums.length]; int max = 0; for (int i = 0; i < nums.length; i++) { for (int j = 0; j < i; j++) { if (nums[j] < nums[i]) { dp[i] = Math.max(dp[i], dp[j] + 1); } } max = Math.max(max, dp[i]); } for (int i = 0; i < dp.length; i++) { System.out.println(dp[i]); } return max; } }