一、题目内容

image.png

二、题解

解法1:

思路

代码

  1. class Solution {
  2. public int findNumberOfLIS(int[] nums) {
  3. int n = nums.length, maxLen = 0, ans = 0;
  4. int[] dp = new int[n];
  5. int[] cnt = new int[n];
  6. for (int i = 0; i < n; ++i) {
  7. dp[i] = 1;
  8. cnt[i] = 1;
  9. for (int j = 0; j < i; ++j) {
  10. if (nums[i] > nums[j]) {
  11. if (dp[j] + 1 > dp[i]) {
  12. dp[i] = dp[j] + 1;
  13. cnt[i] = cnt[j]; // 重置计数
  14. } else if (dp[j] + 1 == dp[i]) {
  15. cnt[i] += cnt[j];
  16. }
  17. }
  18. }
  19. if (dp[i] > maxLen) {
  20. maxLen = dp[i];
  21. ans = cnt[i]; // 重置计数
  22. } else if (dp[i] == maxLen) {
  23. ans += cnt[i];
  24. }
  25. }
  26. return ans;
  27. }
  28. }