LeetCode每日一题2021.9.20

LeetCode673. 最长递增子序列的个数

思路

在最长上升子序列的转移时,维护一个 cnt 数组,表示 以 i 结尾的最长上升子序列个数

f[i] 表示以 i 结尾的最长上升子序列的长度

转移方程为 cnt[i] = (f[i] == f[j] + 1 ? cnt[i] + cnt[j] : cnt[j]);

当f[i] < f[j] + 1的时候, 此时以 i 结尾的最长上升子序列个数显然会被更新,因此直接赋值即可

当f[i] = f[j] + 1的时候, 此时以 i 结尾的最长上升子序列个数需要累加上cnt[j]

AC_CODE

const int N = 2020;
#define n a.size()
class Solution {
public:
int f[N] = {0}, cnt[N] = {0};
int findNumberOfLIS(vector<int>& a) {
int res = 0;
for(int i = 0; i < n; i ++ ) {
f[i] = cnt[i] = 1;
for(int j = 0; j < i; j ++ ) {
if(a[j] < a[i]) {
if(f[i] < f[j] + 1) {
f[i] = f[j] + 1;
cnt[i] = cnt[j];
} else if(f[i] == f[j] + 1) {
cnt[i] += cnt[j];
}
}
}
res = max(res, f[i]);
}
int ans = 0;
for(int i = 0; i < n; i ++ )
ans += (f[i] == res) * cnt[i];
return ans; }
};

最新文章

  1. mysql 启动不了了
  2. 如何用 CSS 做到完全垂直居中
  3. 关于form标签,你该知道
  4. Qt from Linux to Windows target
  5. Leetcode006 ZigZag Conversion
  6. Beyond Compare3 添加到右键菜单
  7. Python列表及元组
  8. 搭建Node.js开发IDE环境WebStrom5 多图
  9. 打造属于自己的支持版本迭代的Asp.Net Web Api Route
  10. 2016/1/9:深度剖析安卓Framebuffer设备驱动
  11. Jmeter之Redis读写
  12. Docker入门 - 005 Docker 容器连接
  13. Dom 兼容处理
  14. C#中用HttpWebRequest中发送GET/HTTP/HTTPS请求 (转载)
  15. kubernetes 实战5_命令_Assign Pods to Nodes&amp;Configure a Pod to Use a ConfigMap
  16. 大型运输行业实战_day13_1_定时任务spring-quartz
  17. APICloud 实践 —— 安装与创建应用
  18. 在hue平台上使用oozie工作流调度
  19. Android 中.aar文件生成方法与用法
  20. JVM内存模型 小小结

热门文章

  1. rabbitmq集群和镜像队列
  2. 初遇NFT-IPFS
  3. &lt;数据结构&gt;KMP算法
  4. Vue.js高效前端开发 • 【Vue列表渲染】
  5. Windows实现桌面录屏、指定窗口录制直播,低延时,H5页面播放
  6. Linux中ssh登陆慢的两种原因
  7. spring boot 使用 mybatis 开启事务回滚 的总结
  8. PowerShell 之常用方法
  9. git clone 失败 ,提示 fatal: unable to access &#39;https://github.com/xxx.git/&#39;: OpenSSL SSL_read: Connection was reset, errno 10054
  10. GORM学习指南