//dp真慢 classSolution{ publicintlengthOfLIS(int[] nums){ int len=nums.length; if(len<=0) return0; int[] dp=newint[len]; dp[0]=1; int maxans=1; for(int i=1;i<len;i++){ int maxval=0; for(int j=0;j<i;j++){ if(nums[i]>nums[j]) maxval=Math.max(maxval,dp[j]); dp[i]=maxval+1; maxans=Math.max(maxans,dp[i]); } } return maxans; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
publicclassSolution{//binary search加dp真香 publicintlengthOfLIS(int[] nums){ int[] dp = newint[nums.length]; int len = 0; for (int num : nums) { int i = Arrays.binarySearch(dp, 0, len, num); if (i < 0) { i = -(i + 1); } dp[i] = num; if (i == len) { len++; } } return len; } }