当前位置: 首页 > news >正文

Kimi LeetCode 3836. 恰好 K 个下标对的最大得分 TypeScript实现

以下是 LeetCode 3836. 恰好 K 个下标对的最大得分 的 TypeScript 实现。

解题思路

三维动态规划。定义 `dp[i][j][k]` 为:在 `nums1` 的前 `i` 个元素和 `nums2` 的前 `j` 个元素中,恰好选择 `k` 对下标所能获得的最大得分。

状态转移有三种情况:
1. 跳过 `nums1[i-1]`:`dp[i][j][k] = dp[i-1][j][k]`
2. 跳过 `nums2[j-1]`:`dp[i][j][k] = dp[i][j-1][k]`
3. 将 `nums1[i-1]` 与 `nums2[j-1]` 配对:`dp[i][j][k] = dp[i-1][j-1][k-1] + nums1[i-1] * nums2[j-1]`

取三者最大值。初始状态 `dp[0][0][0] = 0`,其余为负无穷。

---

TypeScript 代码

```typescript
function maxScore(nums1: number[], nums2: number[], k: number): number {
const n = nums1.length;
const m = nums2.length;
const K = k;
const NEG = -1e18; // 足够小的负无穷

// dp[i][j][k]: 前i个nums1和前j个nums2中选k对的最大得分
const dp: number[][][] = Array.from({ length: n + 1 }, () =>
Array.from({ length: m + 1 }, () => Array(K + 1).fill(NEG))
);
dp[0][0][0] = 0;

for (let i = 0; i <= n; i++) {
for (let j = 0; j <= m; j++) {
for (let kk = 0; kk <= K; kk++) {
// 不选 nums1[i-1]
if (i > 0) {
dp[i][j][kk] = Math.max(dp[i][j][kk], dp[i - 1][j][kk]);
}
// 不选 nums2[j-1]
if (j > 0) {
dp[i][j][kk] = Math.max(dp[i][j][kk], dp[i][j - 1][kk]);
}
// 将 nums1[i-1] 和 nums2[j-1] 配对
if (i > 0 && j > 0 && kk > 0) {
dp[i][j][kk] = Math.max(
dp[i][j][kk],
dp[i - 1][j - 1][kk - 1] + nums1[i - 1] * nums2[j - 1]
);
}
}
}
}

return dp[n][m][K];
}
```

---

关键注意点

要点 说明
返回值类型 TypeScript/JavaScript 的 `number` 为双精度浮点数,最大安全整数约为 `9 × 10^15`。本题最大得分约为 `100 × 10^6 × 10^6 = 10^14`,完全在安全整数范围内,无需额外处理。
负无穷取值 使用 `-1e18` 作为负无穷标记,既足够小又不会引发浮点精度问题。
三维数组初始化 使用 `Array.from` 嵌套创建三维数组,确保每一层都是独立的引用,避免共享数组导致的数据污染。
时间复杂度 `O(n × m × K)`,约 `10^6` 次运算,轻松通过。
空间复杂度 `O(n × m × K)`,约 `10^6` 个数字,内存占用约 830 MB。

http://www.cnnetsun.cn/news/3906002.html

相关文章:

  • 近视防控视角下 如何甄别护眼灯的真实护眼性能?
  • 航空CAD 草图绘制模块 — 直线绘制智能捕捉
  • C语言基础:构造数据类型-结构体 memcpy系统函数
  • AI 观测站|AI 开始让传统运维解释不了问题
  • 财务软件凭证录入规范:摘要怎么写、科目怎么选、附件怎么贴
  • 秒杀场景下基于Jackson流式解析与JVM内存管控的流量控制方案
  • C语言指针与数组:本质区别与高级应用
  • 利用ccglass观测AI Agent内部工作流:从Claude编写贪吃蛇游戏看透LLM请求链路
  • Obsidian AI技能规范:从AI乱写到安全协作的标准化实践
  • 国内开发者代码管理平台选型与避坑指南
  • 大模型输出控制:Temperature与Top-K参数在LangChain中的工程实践
  • 曲靖网站建设dodoco深度解析:为什么本地企业选择专业团队是品牌突围的关键
  • 大盛供应链经验分享
  • 几十页英文行业报告怎么快速看?比逐页翻译更高效的方法
  • C#单件模式实战:从线程安全到Lazy<T>的最佳实践
  • 基于Python与Vosk的《我的世界》本地语音控制自动化方案
  • 光速极限的物理本质与理论突破探讨
  • PAT乙级1060题解析:字符串模式匹配实战技巧
  • 描述对于营销型网站建设很重要飘红效果更佳
  • Altium Designer PCB设计全流程详解:从原理图到Gerber文件输出
  • 从ReAct到Multi-Agent:AI智能体架构演进与实战设计指南
  • 自己怎么建设手机网站首页从零基础到上线的全流程实操指南
  • 企业微信自动化:如何让重复工作交给程序完成?
  • 汇川驱动器调试基本参数
  • GoQuant 图解量化面试每日一题:2-Burning Ropes
  • 前端跨域图片下载实战:Canvas中转方案与CORS策略详解
  • 从零构建多Agent系统:基于Hermes Agent的实战配置与避坑指南
  • 抓取电商数据的技术正解:商品/订单/物流/售后四类API对接实战
  • 2024建设部网站继续教育新规解读与实战避坑指南,助力建筑师资质不掉档
  • Linux下通过udev规则实现USB设备端口绑定与固定设备节点