news 2026/5/24 0:35:00

Qwen模型 LeetCode 2585. 获得分数的方法数 TypeScript实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qwen模型 LeetCode 2585. 获得分数的方法数 TypeScript实现

哇!TypeScript版本来啦~这道题用TS写起来特别优雅,类型安全又清晰!让我给你展示一个高效又易读的实现!

```typescript
function waysToReachTarget(target: number, types: number[][]): number {
const MOD = 1000000007;

// dp[j] 表示恰好花费j时间的方法数
const dp: number[] = new Array(target + 1).fill(0);
dp[0] = 1; // 基础情况:花费0时间有1种方法(什么都不选)

// 遍历每种题目类型
for (const [count, mark] of types) {
// 创建新的dp数组,避免在更新过程中使用已修改的值
const newDp: number[] = [...dp];

// 对于每个可能的时间花费
for (let time = mark; time <= target; time++) {
// 尝试选择1个、2个...count个当前类型的题目
for (let k = 1; k <= count; k++) {
const neededTime = k * mark;
if (neededTime > time) break;

newDp[time] = (newDp[time] + dp[time - neededTime]) % MOD;
}
}

// 更新dp数组
dp.splice(0, dp.length, ...newDp);
}

return dp[target];
}
```

不过等等!这个版本虽然清晰,但还可以进一步**优化性能**。让我给你一个更高效的版本,避免数组复制的开销:

```typescript
function waysToReachTarget(target: number, types: number[][]): number {
const MOD = 1000000007;

// 使用滚动数组,从后往前更新
const dp: number[] = new Array(target + 1).fill(0);
dp[0] = 1;

for (const [count, mark] of types) {
// 从target到mark倒序遍历,避免重复计算
for (let time = target; time >= mark; time--) {
// 临时变量记录新增的方法数
let add = 0;

// 计算选择1到count个当前类型题目的贡献
for (let k = 1; k <= count && k * mark <= time; k++) {
add = (add + dp[time - k * mark]) % MOD;
}

dp[time] = (dp[time] + add) % MOD;
}
}

return dp[target];
}
```

**✨ TypeScript的优势体现**:

1. **类型安全**:`target: number`, `types: number[][]` 让代码意图一目了然
2. **解构赋值**:`for (const [count, mark] of types)` 超简洁!
3. **数组操作**:`new Array(target + 1).fill(0)` 初始化超方便

**让我用个生动的例子解释算法**:

想象你在经营一家魔法商店 🧙‍♂️:
- **商品类型1**:最多卖3个魔法卷轴,每个售价2金币
- **商品类型2**:最多卖2个魔法药水,每个售价3金币
- **目标**:刚好收10金币,问有多少种销售组合?

这就是典型的**多重背包问题**!每种商品有库存限制,我们要恰好花完(收完)指定金额。

**核心思路**:
- 🎯 **状态定义**:`dp[time]` = 恰好花费`time`时间的方法数
- 🔄 **状态转移**:对每种题目类型,考虑选择0到count个的所有可能性
- 🛡️ **边界处理**:`dp[0] = 1` 是关键的base case

**时间复杂度**:O(n × target × maxCount)
**空间复杂度**:O(target)

其实这个问题还可以用**生成函数**的角度理解:每种题目类型对应多项式 `(1 + x^mark + x^(2*mark) + ... + x^(count*mark))`,答案就是所有多项式乘积中 `x^target` 的系数!

你觉得这个TS实现怎么样?要不要我再给你讲讲其他动态规划的经典套路?比如如何识别背包问题的变种?😄

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/24 0:28:56

Oracle EBS的退货处理逻辑

1.1日库存数量1个 价格20元 库存价值1*2020元&#xff0c;采用移动平均成本法2.1日PO1 采购价格 10元 数量3个 入库3个 此时库存价值为 203*1050元 平均价格为 50/412.5元3.1日PO2 采购价格 20元 数量6个 入库6个 此时库存价值为 203020*6170元 平均价格为 170/1017元5.1日PO1 …

作者头像 李华
网站建设 2026/5/24 0:04:53

通过curl命令调试Taotoken大模型API,快速排查接入问题

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过curl命令调试Taotoken大模型API&#xff0c;快速排查接入问题 在接入大模型服务时&#xff0c;直接使用HTTP请求进行调试是一种…

作者头像 李华
网站建设 2026/5/24 0:03:21

问题不是要不要审,而是审查放在哪条路径

很多团队把输出审核接进大模型服务后&#xff0c;第一反应是“更安全了”&#xff0c;真正上线才发现另一个代价更吓人&#xff1a;用户看到的流式回复开始一卡一顿&#xff0c;P95 首包时间和整段输出时间一起抖。⚠️ 这类问题往往不是审核模型慢&#xff0c;而是审核位置放错…

作者头像 李华
网站建设 2026/5/24 0:01:21

附录 B:术语表

本术语表面向“从 MM 到 HMM”专栏阅读过程中的快速查阅。它不是内核 API 手册&#xff0c;而是把文章中反复出现的概念放到同一张地图上&#xff1a;先给出直观含义&#xff0c;再说明它在 Linux MM/HMM 语境里的作用。建议阅读方式&#xff1a; 初读专栏时&#xff0c;把它当…

作者头像 李华