673. Number of Longest Increasing Subsequence
Problem
Given an integer array nums, return the number of longest increasing subsequences.
Notice that the sequence has to be strictly increasing.
Example 1:
Input: nums = [1,3,5,4,7]
Output: 2
Explanation: The two longest increasing subsequences are [1, 3, 4, 7] and [1, 3, 5, 7].
Example 2:
Input: nums = [2,2,2,2,2]
Output: 5
Explanation: The length of the longest increasing subsequence is 1, and there are 5 increasing subsequences of length 1, so output 5.
Constraints:
- 1 <= nums.length <= 2000
Code
300. Longest Increasing Subsequence
class Solution {
public int findNumberOfLIS(int[] nums) {
int maxLen = 1;
int[] dp = new int[nums.length];
int[] count = new int[nums.length];
dp[0] = 1;
count[0] = 1;
for(int i = 1; i < nums.length; i++) {
dp[i] = 1;
int maxCount = 1;
for(int j = 0; j < i; j++) {
if(nums[j] < nums[i]) {
if(dp[j] + 1 == dp[i]) {
maxCount += count[j];
} else if (dp[j] + 1 > dp[i]) {
maxCount = count[j];
dp[i] = dp[j] + 1;
}
}
}
count[i] = maxCount;
maxLen = Math.max(maxLen, dp[i]);
}
int res = 0;
for(int i = 0; i < nums.length; i++) {
if(dp[i] == maxLen) {
res += count[i];
}
}
return res;
}
}
按 <- 键看上一题!
672. Bulb Switcher II
按 -> 键看下一题!
674. Longest Continuous Increasing Subsequence