力扣No.673.最长递增子序列的个数

题目:

链接:

https://leetcode.cn/problems/number-of-longest-increasing-subsequence/description/

代码:

复制代码
class Solution {
    public int findNumberOfLIS(int[] nums) {
        int n=nums.length;
        int[] len=new int[n];
        int[] count=new int[n];
        //初始化
        for(int i=0;i<n;i++) len[i]=count[i]=1;
        int maxLen=0,maxCount=0;
        for(int i=0;i<n;i++){
            for(int j=0;j<i;j++){
                //转移方程
                if(nums[i]>nums[j]){
                    if(len[i]==len[j]+1){
                        count[i]+=count[j];
                    }else if(len[i]<len[j]+1){
                        len[i]=len[j]+1;
                        count[i]=count[j];
                    }
                }
            }
            //返回值
            if(maxLen<len[i]){ 
                maxLen=len[i];
                maxCount=count[i];
            }else if(maxLen==len[i]){
                maxCount+=count[i];
            }
        }
        //返回结果
        return maxCount;
    }
}

状态表示:

  • len[i]表示:以i结尾的子序列中,最长递增子序列的长度
  • count[i]表示:以i结尾的子序列中,最长递增子序列的个数
相关推荐
2401_8321319521 小时前
模板错误消息优化
开发语言·c++·算法
金枪不摆鳍21 小时前
算法--二叉搜索树
数据结构·c++·算法
近津薪荼21 小时前
优选算法——双指针6(单调性)
c++·学习·算法
向哆哆21 小时前
画栈 · 跨端画师接稿平台:基于 Flutter × OpenHarmony 的整体设计与数据结构解析
数据结构·flutter·开源·鸿蒙·openharmony·开源鸿蒙
helloworldandy21 小时前
高性能图像处理库
开发语言·c++·算法
2401_8365631821 小时前
C++中的枚举类高级用法
开发语言·c++·算法
bantinghy1 天前
Nginx基础加权轮询负载均衡算法
服务器·算法·nginx·负载均衡
chao1898441 天前
矢量拟合算法在网络参数有理式拟合中的应用
开发语言·算法
代码无bug抓狂人1 天前
动态规划(附带入门例题)
c语言·算法·动态规划
weixin_445402301 天前
C++中的命令模式变体
开发语言·c++·算法