LeetCode673
2024-10-20 00:11:23
LeetCode每日一题2021.9.20
思路
在最长上升子序列的转移时,维护一个 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;
}
};
最新文章
- mysql 启动不了了
- 如何用 CSS 做到完全垂直居中
- 关于form标签,你该知道
- Qt from Linux to Windows target
- Leetcode006 ZigZag Conversion
- Beyond Compare3 添加到右键菜单
- Python列表及元组
- 搭建Node.js开发IDE环境WebStrom5 多图
- 打造属于自己的支持版本迭代的Asp.Net Web Api Route
- 2016/1/9:深度剖析安卓Framebuffer设备驱动
- Jmeter之Redis读写
- Docker入门 - 005 Docker 容器连接
- Dom 兼容处理
- C#中用HttpWebRequest中发送GET/HTTP/HTTPS请求 (转载)
- kubernetes 实战5_命令_Assign Pods to Nodes&;Configure a Pod to Use a ConfigMap
- 大型运输行业实战_day13_1_定时任务spring-quartz
- APICloud 实践 —— 安装与创建应用
- 在hue平台上使用oozie工作流调度
- Android 中.aar文件生成方法与用法
- JVM内存模型 小小结
热门文章
- rabbitmq集群和镜像队列
- 初遇NFT-IPFS
- <;数据结构>;KMP算法
- Vue.js高效前端开发 • 【Vue列表渲染】
- Windows实现桌面录屏、指定窗口录制直播,低延时,H5页面播放
- Linux中ssh登陆慢的两种原因
- spring boot 使用 mybatis 开启事务回滚 的总结
- PowerShell 之常用方法
- git clone 失败 ,提示 fatal: unable to access &#39;https://github.com/xxx.git/&#39;: OpenSSL SSL_read: Connection was reset, errno 10054
- GORM学习指南