新闻详情

新闻详情

首页 / 资讯中心 / 详情

千问 LeetCode 3177. 求出最长好子序列 II Java实现

发布时间:2026/9/18 9:22:59来源:尧图网络
千问    LeetCode 3177. 求出最长好子序列 II Java实现
针对 LeetCode 3177. 求出最长好子序列 II由于数据规模较大常规的动态规划如三重循环或双重循环会导致超时。我们需要使用 哈希表 动态规划 前缀和全局最大值优化 来将时间复杂度降至 O(N times K)。核心思路1. 状态定义定义 dp[x][j] 表示以数值 x 结尾且恰好有 j 个相邻不同元素坏对的最长好子序列长度。2. 状态转移- 如果当前数字 x 与上一个数字相同则不增加坏对数量dp[x][j] dp[x][j] 1。- 如果当前数字 x 与上一个数字不同则坏对数量加 1dp[x][j] max(dp[y][j-1]) 1其中 y ! x。3. 优化- 使用哈希表HashMap存储以各个数值结尾的状态避免遍历整个数组。- 维护一个数组 globalMax[j]记录所有数值中坏对数量为 j 时的最长子序列长度。这样在遇到不同数字时可以直接通过 globalMax[j-1] 1 获取最优解省去遍历其他数值的开销。- 在更新哈希表时需从后往前从 k 到 0遍历 j防止同一轮次的数据被重复使用。Java 代码实现class Solution {public int maximumLength(int[] nums, int k) {// dp: key为数组中的值value为长度为k1的数组表示以该值结尾、包含0~k个不同相邻对的最大长度MapInteger, int[] dp new HashMap();// globalMax[j]: 记录当前所有数字中以恰好 j 个不同相邻对结尾的最大子序列长度int[] globalMax new int[k 2];for (int x : nums) {// 如果当前数字第一次出现初始化其对应的dp数组if (!dp.containsKey(x)) {dp.put(x, new int[k 1]);}int[] curDp dp.get(x);// 必须从 k 倒序遍历到 0避免本轮更新的数据影响后续状态的转移for (int j k; j 0; j--) {// 状态转移取“延续相同数字”和“接续不同数字”中的最大值然后 1// globalMax[j] 已经包含了相同数字的情况因为 f(x,j) f(x,j-1)curDp[j] Math.max(curDp[j], globalMax[j]) 1;// 更新全局最大值注意对应到 globalMax 的索引需要 1globalMax[j 1] Math.max(globalMax[j 1], curDp[j]);}}// 返回包含最多 k 个不同相邻对的最大长度return globalMax[k 1];}}复杂度分析- 时间复杂度O(N times K)其中 N 是数组 nums 的长度。对于每个元素我们只需要在内层循环中遍历 K 次即可完成状态转移。- 空间复杂度O(U times K)其中 U 是数组 nums 中不同数字的个数最坏情况下为 O(N times K)。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

制造业AI底座建设:数据、算力与模型的落地实践 2026/9/18 9:22:22

制造业AI底座建设:数据、算力与模型的落地实践

1. 制造业AI落地的真实落差:为什么很多项目停在“演示即巅峰”这些年走访了不少制造企业,有个现象让我印象很深:很多公司的AI项目PPT做得非常漂亮,要么是设备预测性维护的看板,要么是质检准确率达到99%的Demo视频&…

阅读更多 →
Mac上用Ollama跑本地大模型:安装、调优与落地实践 2026/9/18 9:22:22

Mac上用Ollama跑本地大模型:安装、调优与落地实践

如果你手头正好有一台 Mac,又刷到过 “Ollama 本地大模型” 这个词,那么这篇东西就是给你准备的。标题里的关键词很直白:Mac、Ollama、本地大模型、落地优化。我用一台 M 系列芯片的 MacBook 从零开始实操,把安装、下载慢、模型管…

阅读更多 →
Aider自定义API配置指南:从环境变量到本地模型接入 2026/9/18 9:22:22

Aider自定义API配置指南:从环境变量到本地模型接入

用终端写代码的人,大概率都听过Aider。它不是那种轻度补全插件,而是真正意义上的AI配对编程工具——你坐在命令行里,把需求丢给它,它读取你的整个代码仓库,改文件、跑测试、提交commit,一套流程全在终端里闭…

阅读更多 →
CANN ops-math 算子开发指南:aclnnReflectionPad1dBackward 接口详解与反射填充反向传播实战 2026/9/18 9:22:22

CANN ops-math 算子开发指南:aclnnReflectionPad1dBackward 接口详解与反射填充反向传播实战

CANN ops-math 算子开发指南:aclnnReflectionPad1dBackward 接口详解与反射填充反向传播实战 【免费下载链接】ops-math 本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-math aclnnR…

阅读更多 →
Flutter xrpc库鸿蒙适配实战与优化 2026/9/18 9:22:22

Flutter xrpc库鸿蒙适配实战与优化

1. 项目背景与核心价值在鸿蒙生态快速发展的当下,Flutter开发者面临一个关键挑战:如何让现有Flutter生态中的优秀三方库在鸿蒙系统上无缝运行。xrpc作为Flutter生态中重要的去中心化通讯协议库,其鸿蒙化适配具有典型示范意义。这个适配工作的…

阅读更多 →
Windows AI 编程环境搭建全流程:从系统底座到本地模型与助手接入 2026/9/18 9:19:21

Windows AI 编程环境搭建全流程:从系统底座到本地模型与助手接入

装 AI 编程环境这件事,卡住大多数人的从来不是某一条命令,而是命令之间的先后顺序,以及每条命令背后默认了什么。我在 Windows 上反复装过十几遍这套东西:给同事的机器装、给自己的新硬盘装、在没有外网的机房里装。每一次翻车的原…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞