news 2026/5/28 2:29:57

Qwen模型 Max LeetCode 2790. 长度递增组的最大数目 TypeScript实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qwen模型 Max LeetCode 2790. 长度递增组的最大数目 TypeScript实现

哈哈,刚聊完 Java 版,现在要 TypeScript 版是吧?没问题!我超爱 TS 的类型安全,写起来特别安心~来,咱们把这道 **LeetCode 2790. 长度递增组的最大数目** 用 TypeScript 实现得又优雅又高效 ✨

---

### 🧠 思路回顾(快速过一遍)

我们要用 `usageLimits` 数组中的每个元素作为“某个下标最多能参与的组数”,构造尽可能多的**非空组**,且第 i 个组的大小严格大于前一个(即第1组1人,第2组2人……第k组k人)。

关键点:
- 每组必须由**不同下标的元素**组成(所以第 g 组需要 g 个不同下标)
- 下标 i 最多出现在 `usageLimits[i]` 个组中
- 目标:最大化组数 k

✅ 贪心策略:
将 `usageLimits` **升序排序**,然后从前向后累加资源。只要当前累积的总“可用人次” ≥ 构造前 `groups + 1` 个组所需的总人数(即 `(groups+1)*(groups+2)/2`),就说明可以多建一组!

这个逻辑在 TS 里一样成立,而且写起来更清爽~

---

### ✅ TypeScript 实现

```ts
function maxIncreasingGroups(usageLimits: number[]): number {
// 升序排序
usageLimits.sort((a, b) => a - b);

let total = 0n; // 使用 BigInt 防止大数溢出(虽然题目数据可能不会,但安全第一!)
let groups = 0;

for (const limit of usageLimits) {
total += BigInt(limit);
// 计算构造 groups+1 个组所需的最小总人次:1 + 2 + ... + (groups+1)
const needed = BigInt(groups + 1) * BigInt(groups + 2) / 2n;

if (total >= needed) {
groups++;
}
}

return groups;
}
```

> 💡 **为什么用 `BigInt`?**
> 虽然 LeetCode 测试用例中 `usageLimits.length <= 10^5`,单个值也 ≤ 10^9,但 `(groups+1)*(groups+2)/2` 在 groups 接近 1e5 时会达到 ~5e10,仍在 `Number` 安全整数范围内(`Number.MAX_SAFE_INTEGER ≈ 9e15`)。
> 所以其实用 `number` 也可以,但用 `BigInt` 更严谨,尤其在面试中展示你考虑了边界情况,加分!✨

如果你不想用 BigInt,也可以这样写(更简洁):

```ts
function maxIncreasingGroups(usageLimits: number[]): number {
usageLimits.sort((a, b) => a - b);

let total = 0;
let groups = 0;

for (const limit of usageLimits) {
total += limit;
// 注意:这里用 long-like 计算,TS 中 number 是 double,但整数运算安全
if (total >= (groups + 1) * (groups + 2) / 2) {
groups++;
}
}

return groups;
}
```

✅ 这个版本在 LeetCode 上完全可以通过!

---

### 🔍 举个小例子验证

输入:`[3, 3, 3]`

- 排序后:`[3,3,3]`
- i=0: total=3 → need 1 → groups=1
- i=1: total=6 → need 3 (1+2) → 6≥3 → groups=2
- i=2: total=9 → need 6 (1+2+3) → 9≥6 → groups=3

返回 `3` ✅
确实可以:
- 组1:用任意1个
- 组2:用任意2个
- 组3:用全部3个
每个下标用了3次,刚好满足!

---

### 📌 小贴士

- 别忘了 `.sort()` 默认是字符串排序,必须传比较函数 `(a, b) => a - b`
- 这题本质是**资源分配 + 贪心验证**,不是 DP 哦!很多人一开始想复杂了
- 时间复杂度:**O(n log n)**,空间 O(1)

---

怎么样?是不是比 Java 还清爽?😄
如果你正在刷题备战,这种“数学+贪心”类题目最近可太常见了!要不要再来一道类似的练练手?比如 LeetCode 2791 或者 2813?我可以陪你一起拆解~

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

Gemini3.5Flash:开源文档高能助手

对于开源项目维护者&#xff08;Maintainer&#xff09;而言&#xff0c;编写和维护 README.md 往往是一件“重要但痛苦”的事。README 是项目的门面——一个结构混乱、缺少快速上手示例、甚至有拼写错误的文档&#xff0c;会直接劝退 80% 的潜在使用者。2026 年&#xff0c;大…

作者头像 李华
网站建设 2026/5/28 2:23:18

2026年国内有哪些专业的GEO服务商/公司推荐?真实测评

你有没有遇到过这样的场景&#xff1a;在豆包或DeepSeek上问一个行业问题&#xff0c;AI给出的答案里反复出现某个品牌&#xff0c;而你甚至没有主动搜索它。这就是GEO&#xff08;生成式引擎优化&#xff09;的价值——让你的品牌成为AI眼中的“标准答案”。2026年&#xff0c…

作者头像 李华
网站建设 2026/5/28 2:23:10

CICV2026|51Sim分享面向物理AI的下一代仿真体系

第十三届智能网联汽车技术年会&#xff08;CICV 2026&#xff09;在上海盛大开幕&#xff0c;大会以“智启新程 云联未来&#xff0c;构建智能网联汽车新生态”为主题&#xff0c;汇聚来自整车企业、科技公司、高校科研机构及产业链上下游的近800位行业代表&#xff0c;共同探讨…

作者头像 李华
网站建设 2026/5/28 2:23:08

基于可靠性的直接Turbo译码器RCODD的FPGA实现与优化

1. 项目概述&#xff1a;面向短码的可靠性直接Turbo译码器在卫星遥控、深空通信这类对可靠性要求近乎苛刻的应用里&#xff0c;每一比特数据都价值连城。传统的Turbo码译码器&#xff0c;比如大家熟知的Log-MAP&#xff0c;虽然性能强悍&#xff0c;但在处理短数据块时&#xf…

作者头像 李华