![]()
class Solution {
public int findNumberOfLIS(int[] nums) {
int n = nums.length;
int[] dp = new int[n];
Arrays.fill(dp,1); // dp[i] 以i结尾的最大长度
int[] count = new int[n]; // count[i] 以i结尾的最大长度的个数
Arrays.fill(count,1);
int max = 1;
for(int i = 0; i < n; i++) {
for(int j = i - 1; j >= 0; j--) {
if(nums[i] > nums[j]) {
if(dp[j] + 1 > dp[i]) { //说明是新的最大长度 所以dp[i]count[i]都要更新
dp[i] = dp[j] + 1;
count[i] = count[j];
} else if (dp[j] + 1 == dp[i]) {
count[i] += count[j];
}
}
}
max = Math.max(max,dp[i]);
}
int res = 0;
for(int i = 0; i < n; i++) {
if(dp[i] == max) res += count[i];
}
return res;
}
}