Leetcode3202. 找出有效子序列的最大长度 II

news/2024/9/13 22:47:37/ 标签: C++, LeetCode, 数据结构与算法, 动态规划

Every day a Leetcode

题目来源:3202. 找出有效子序列的最大长度 II

解法1:动态规划

本题是选与不选的子序列问题,可以尝试给出这样的状态定义:

dp[i][j]:以 nums[i] 结尾模 k 后值为 j 的最长子序列的长度。

那么状态转移方程是怎样的呢?对于每一个 i,遍历 j(0<=j<i),dp[i][(nums[i] + nums[j]) % k] = dp[j][(nums[i] + nums[j]) % k] + 1,保证模 k 后的值相同。

代码:

/** @lc app=leetcode.cn id=3202 lang=cpp** [3202] 找出有效子序列的最大长度 II*/// @lc code=start
class Solution
{
public:int maximumLength(vector<int> &nums, int k){int n = nums.size();// dp[i][j]: 以 nums[i] 结尾模 k 后值为 j 的最长子序列的长度vector<vector<int>> dp(n, vector<int>(k, 1));int ans = 1;// 状态转移for (int i = 1; i < n; i++)for (int j = 0; j < i; j++){dp[i][(nums[i] + nums[j]) % k] = dp[j][(nums[i] + nums[j]) % k] + 1;ans = max(ans, dp[i][(nums[i] + nums[j]) % k]);}return ans;}
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n2),其中 n 是数组 nums 的长度。

空间复杂度:O(n*k),其中 n 是数组 nums 的长度。


http://www.ppmy.cn/news/1475745.html

相关文章

Ubuntu 安装配置与调优 Docker 并支持 IPv6

今天&#xff0c;我们将在三丰云这款不错的免费云服务器上进行 Docker 部署和调优测试。三丰云的免费云服务器配置为&#xff1a;1核CPU、1G内存、10G硬盘和5M带宽。对于一个免费的服务来说&#xff0c;这样的配置已经相当给力了&#xff0c;特别适合我这种需要随时随地进行测试…

python数据可视化(6)——绘制散点图

课程学习来源&#xff1a;b站up&#xff1a;【蚂蚁学python】 【课程链接&#xff1a;【【数据可视化】Python数据图表可视化入门到实战】】 【课程资料链接&#xff1a;【链接】】 Python绘制散点图查看BMI与保险费的关系 散点图: 用两组数据构成多个坐标点&#xff0c;考察…

加密软件|让数据传输更安全

加密软件在当今数字化时代扮演着至关重要的角色&#xff0c;它们通过先进的加密算法和技术&#xff0c;确保数据在存储、传输和分享过程中的安全性&#xff0c;从而保护个人隐私和企业机密。一、加密软件的基本作用数据加密&#xff1a;加密软件通过应用复杂的加密算法&#xf…

解决npm install 安装报错记录贴

前言 环境背景 nodeJS v.14.8.3(nvm安装) package.json: “node-sass”:“8.0.0” 网络环境&#xff1a; 公司内网 镜像地址&#xff1a;公司的镜像源 解决报错过程&#xff1a; 1.换了最新版 vscode&#xff0c; 然后重装 node_modules 还是不行&#xff0c; 报PostCSS rec…

2024Datawhale AI夏令营---基于术语词典干预的机器翻译挑战赛--学习笔记

#Datawhale #NLP 1.背景介绍&#xff1a; 机器翻译&#xff08;Machine Translation&#xff0c;简称MT&#xff09;是自然语言处理领域的一个重要分支&#xff0c;其目标是将一种语言的文本自动转换为另一种语言的文本。机器翻译的发展可以追溯到20世纪50年代&#xff0c;经历…

RABBITMQ的本地测试证书生成脚本

由于小程序要求必须访问wss的接口&#xff0c;因此需要将测试环境也切换到https&#xff0c;看了下官方的文档 RabbitMQ Web STOMP Plugin | RabbitMQ里面有这个信息 然后敲打GPT一阵子&#xff0c;把要求输入几个来回&#xff0c;得到这样一个脚本&#xff1a; generate_cer…

C语言 ——— 调试的时候如何查看当前程序的变量信息

目录 调试前/后的调试窗口 ​编辑 调试窗口 --- 监视 调试窗口 --- 内存 调试窗口 --- 调用堆栈 调试前/后的调试窗口 调试前的调试窗口&#xff1a; 调试前的调试窗口是没有显示的&#xff0c;只有在调试的时候才会有相对应的调试窗口 调试后的调试窗口&#xff1a…

Git的命令使用与IDEA内置git图形化的使用

Git 简介 Git 是分布式版本控制系统&#xff0c;它可以帮助开发人员跟踪和管理代码的更改。Git 可以记录代码的历史记录&#xff0c;并允许您在不同版本之间切换。 通过历史记录可以查看&#xff1a; 进行了哪些更改&#xff1f;谁进行了更改&#xff1f;何时进行了更改&#…

ARM架构(一)—— ARMV8V9基础概念

目录 1.ARMCore的时间线2.ARM术语小结2.1 A64和arrch642.2ARM架构现在的5个系列2.3 微架构2.4 PE2.5 Banked2.6 ARM文档术语2.7 IMPLEMENTATION DEFINFD 和 DEPRECATED2.8 EL1t和EL1h 3 ARMv7的软件架构4 安全状态切换模型4.1 Secure state和Non-secure state介绍 5 Interproce…

深入理解I/O模型

目录 一、I/O 模型简介 二、I/O 模型 2.1 同步阻塞 I/O 2.2 同步非阻塞I/O 2.3 I/O多路复用 2.4 异步I/O 2.5 信号驱动 I/O 三、总结 一、I/O 模型简介 所谓的 I/O 就是计算机内存与外部设备之间拷贝数据数据的过程。有 5 中 I/O 模型&#xff0c;分别是同步阻塞 I/O、同步…

细说MCU用定时器控制ADC采样频率的实现方法

目录 一、工程依赖的硬件及背景 二、设计目的 三、 建立工程 1.选择时钟源和Debug模式 2.配置系统时钟和ADC时钟 3.配置串口 4.配置ADC 5.设置TIM3 6.设置TIM4 7.配置中断 8.GPIO 四、代码修改 1.重新定义ADC回调函数 2.在主程序中编写数据发送代码 3.使能ADC和…

云端日历同步大师:iCloud让工作与生活井井有条

云端日历同步大师&#xff1a;iCloud让工作与生活井井有条 在快节奏的现代生活中&#xff0c;无论是工作还是个人生活&#xff0c;我们都需要一个可靠的日历应用来帮助我们管理日常事务和重要事件。iCloud作为苹果公司提供的云服务&#xff0c;其日历应用&#xff08;Apple Ca…

PyMuPDF 包读取pdf文档时,span里的flags属性代表什么

在 PyMuPDF&#xff08;也称为 fitz&#xff09;库中&#xff0c;flags 属性表示文本的格式化信息。flags 是一个整数&#xff0c;它包含了不同位&#xff08;bits&#xff09;的标志&#xff0c;每个位代表文本的一种属性。这些标志位可以组合在一起表示复杂的文本格式。 具体…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(三)-机上无线电接入节点无人机

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

记一次使用vue连接rabbitMq

连接rabbitMq需要使用stompjsnpm i stompjs 下下面是连接代码 import Stomp from stompjsonConnected(frame) {// 绑定交换机exchange_pushmsg是交换机的名字rk_pushmsg是绑定的路由keyvar exchange this.rabbitMqexchange || queue.device.zzzz// 创建随机队列用上面的路由k…

神经网络替代密度泛函理论!清华研究组发布通用材料模型 DeepH,实现超精准预测

在材料设计中&#xff0c;了解其电子结构与性质是预测材料性能、发现新材料、优化材料性能的关键。过去&#xff0c;业界广泛使用密度泛函理论 (DFT) 来研究材料电子结构和性质&#xff0c;其实质是将电子密度作为分子&#xff08;原子&#xff09;基态中所有信息的载体&#x…

【Python】sklearn教程

1. sklearn库介绍 sklearn是 Python 中一个非常重要的机器学习库&#xff0c;全称为scikit-learn。它是基于Python语言的机器学习工具&#xff0c;提供了一系列简单高效的机器学习算法。sklearn库通常与NumPy和SciPy库一起使用&#xff0c;用于数据预处理、特征选择、模型训练…

无人机之遥控器分类篇

一、传统遥控器 传统无人机遥控器一般包括开关键、遥控天线等基础装置。但是会随着无人机具体的应用和功能而开发不同的按键。它的信号稳定性远超对比其他遥控&#xff0c;而且遥控距离也更远&#xff08;一般遥控范围在100米或以上&#xff09;传统遥控器对于初学者来说比较难…

/EtherCATInfo/Descriptions/Devices/Device/SubDevice/@Hideable

SubDevice/Hideable 属性 /EtherCATInfo/Descriptions/Devices/Device/SubDevice/Hideable 出现次数&#xff1a;可选 (0…1)数据类型&#xff1a;布尔值 该属性仅应在列出所有子设备的主设备的 ESI 文件中使用。该属性表示配置工具是否可以隐藏相应的子设备。只有不需要配置…

PXE、Kickstart和cobbler

一.系统装机 1.1 三种引导方式 启动操作系统 1.硬盘 2.光驱(u盘) 3.网络启动 pxe 1.2 系统安装过程 1.加载boot loader: Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设 备、建立内存空间的映射图,从而将系统的软硬…