674. 最长连续递增序列 最长递增子序列 一维dp即可 存当前最长长度,需维护最大值,
class Solution {public int findLengthOfLCIS(int[] nums) {if(nums==null||nums.length==0) return 0;int len=nums.length;int maxLen=0;int[] dp=new int[len];//需要更新维护最大值,不一定出现在末尾int maxv=1;Arrays.fill(dp,1);for(int i=1;i<len;i++){if(nums[i]>nums[i-1]){dp[i]=dp[i-1]+1;maxv=Math.max(maxv,dp[i]);}}return maxv;}
}
673. 最长递增子序列的个数
class Solution {public int findNumberOfLIS(int[] nums) {int len=nums.length;if(nums==null||len==0) return 0;//以nums[i]结尾最长序列长度int[] length=new int[len];//以nums[i]结尾最长序列 个数int[] count=new int[len];Arrays.fill(length,1);Arrays.fill(count,1);int maxlen=0;for(int i=0;i<len;i++){for(int j=0;j<i;j++){if(nums[i]>nums[j]){if(length[j]+1>length[i]) {length[i]=length[j]+1;count[i]=count[j];}else if(length[j]+1==length[i]) count[i]+=count[j];}}//赋值。。maxlen= Math.max(maxlen,length[i]);}int res=0;for(int i=0;i<len;i++){if(maxlen==length[i]) res+=count[i];}return res;}
}