力扣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结尾的子序列中,最长递增子序列的个数
相关推荐
星辞树16 小时前
揭秘阿里 DIN:当深度学习遇上“千物千面”
算法
刘立军16 小时前
如何选择FAISS的索引类型
人工智能·算法·架构
小芒果_0116 小时前
整理归并排序
c++·算法·排序算法·信息学奥赛
牛三金16 小时前
匿踪查询沿革-Private Information Retrieval(PIR)
算法·安全
德育处主任16 小时前
『NAS』在群晖部署一个文件加密工具-hat.sh
前端·算法·docker
星辞树16 小时前
从 L1/L2 到 Dropout:深度解析正则化,为何推荐系统“只能练一次”?
算法
玖剹16 小时前
队列+宽搜(bfs)
数据结构·c++·算法·leetcode·宽度优先
mit6.82417 小时前
01bfs|前缀和的前缀和
算法
wen__xvn17 小时前
代码随想录算法训练营DAY11第五章 栈与队列part02
算法