当前位置: 首页 > 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.jsqmd.com/news/1351678/

相关文章:

  • 200基于SpringBoot4+Vue3的化妆品交易微信小程序、化妆品电商平台、化妆品微信小程序商城、在线化妆品销售系统、化妆品电商系统、化妆品商城小程序、美妆商城系统;毕业设计、课程设计
  • 2026年不锈钢型钢厂家**:C型钢/U型钢/Z型钢冷弯型钢,热镀锌C型导轨与屋面檩条优质厂商深度解析 - 优企名品
  • PostgreSQL多进程架构解析与性能优化实践
  • 2026年达州艺术培训行业观察:从资质选择到权益保障,家长关心的五大核心问题解析! - 优质品牌商家
  • NVIDIA GPU实战指南:从驱动安装到性能压榨与疑难排查
  • 施密特触发器反相器SN74LVC14AQ:信号调理与波形整形的工程实践
  • GitHub中文插件:3分钟让你的GitHub界面告别英文困扰
  • Unity塔防游戏开发:数据驱动、寻路与性能优化实战指南
  • 利用ccglass观测AI Agent内部工作流:从Claude编写贪吃蛇游戏看透LLM请求链路
  • 算术位移与逻辑位移:从硬件原理到编程实战的深度解析
  • 九江本地防水补漏哪家好?屋顶 卫生间 外墙 地下室 阳台堵漏师傅对比(2026年8月新) - 北京金修达天津维修部
  • Oracle ORA-01461异常解析与驱动版本兼容性优化
  • 高分子量聚酯树脂的性能突破与应用前景
  • 2小时,我搭了一套客户档案系统,再也不用翻几十个Excel表!
  • JAI GO-5100C-PGE 扫描相机
  • AI智能体安全控制:从提示词工程到缰绳工程的系统化实践
  • 2026年西安除甲醛公司怎么选?口碑与实力深度解析(附真实案例) - 优质品牌商家
  • Node.js环境变量配置全攻略:从安装到故障排查
  • 设计风格好猫爬架推荐哪款? - 中媒介
  • 贪心算法实战:删数问题与单调栈优化详解
  • Godot全局音乐管理器:基于自动加载与单例模式的音频系统设计
  • HR 多数时间耗费无效简历排查,AI 筛选释放招聘核心工作精力
  • 【AI编程工具】Trae/CodeBuddy/Qoder
  • React Ant Design 5.x 企业级实战:从配置到性能优化的完整指南
  • 函数学习总结呀
  • 消防喷淋泵防护升级|汉吉龙 VS5200 激光对中仪,守住火情关键的那几秒
  • 2026年糊箱机供应厂家哪家正规?实地看厂认准元鼎包装机械 - 热点品牌推荐
  • TEKTRONIX 7035-172-04A 继电器开关卡
  • 93-Prompt注入攻击与防御-直接注入-间接注入-越狱-输入净化
  • Unity ShaderGraph五大核心节点实战:从零构建《绝地求生》级动态海面效果