news 2026/4/15 15:20:06

LC.846 | 一手顺子 | 有序集合| map计数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LC.846 | 一手顺子 | 有序集合| map计数

输入:

  • 整数数组hand表示手里的牌面值
  • 整数groupSize表示每组顺子的长度

要求:

  • 把所有牌分成若干组
  • 每组必须是groupSize连续
  • 能分完返回true,否则false

输出:

  • bool

思路:

这题的关键不是“怎么凑一组顺子”,而是:如果能成功分组,最小的牌一定只能作为某个顺子的起点(它不可能被更小的牌带着走,因为没有更小的了)。

所以策略很直接:

  1. 如果hand.size() % groupSize != 0,直接不可能。

  2. map<int,int> count统计每种牌出现次数(map自动按牌面升序)。

  3. map.begin()开始扫每个牌startCard

  • num = count[startCard],表示当前这个牌还剩多少张没被用掉。
  • 如果num > 0,说明我们必须以startCard作为起点,开num个顺子:
    • 需要把[startCard, startCard+1, ..., startCard+groupSize-1]每个牌都扣掉num
    • 若其中某张牌数量不足(count[currentCard] < num),直接失败
  1. 扫完不失败就成功。

这个贪心的本质是:先把最小牌“安置掉”,否则后面无论怎么分组它都会卡死。


复杂度:

  • 时间复杂度:O(N log N)
    • map和后续访问都是log
  • 空间复杂度:O(N)(计数表)

classSolution{public:boolisNStraightHand(vector<int>&hand,intgroupSize){if((int)hand.size()%groupSize!=0)returnfalse;map<int,int>count;for(intx:hand){count[x]++;}for(autoit=count.begin();it!=count.end();++it){intstartCard=it->first;intnum=it->second;if(num>0){for(inti=0;i<groupSize;++i){intcur=startCard+i;if(count[cur]<num)returnfalse;count[cur]-=num;}}}returntrue;}};
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/4 19:39:37

SSH免密码登录配置:提升PyTorch镜像操作效率

SSH免密码登录配置&#xff1a;提升PyTorch镜像操作效率 在现代深度学习开发中&#xff0c;一个常见的场景是&#xff1a;你正坐在本地工作站前&#xff0c;准备调试一段训练脚本。远程服务器上的容器已经跑起来了&#xff0c;GPU 也已就绪&#xff0c;但每次 ssh 连接、每次 s…

作者头像 李华
网站建设 2026/4/2 19:34:11

Git rebase vs merge:PyTorch项目协作规范建议

Git rebase vs merge&#xff1a;PyTorch项目协作规范建议 在深度学习项目的实际开发中&#xff0c;一个看似微不足道的 Git 操作选择——是用 merge 还是 rebase&#xff0c;往往会在几个月后成为团队回溯 bug 时的“灾难源头”。尤其当多个研究员同时在 PyTorch 项目上迭代模…

作者头像 李华
网站建设 2026/4/14 14:19:03

GitHub Issue模板设计:收集用户关于镜像的反馈

GitHub Issue模板设计&#xff1a;收集用户关于镜像的反馈 在深度学习项目开发中&#xff0c;一个常见的痛点是环境配置——明明在本地跑得好好的模型&#xff0c;换到服务器上却“水土不服”。PyTorch 与 CUDA 的版本兼容性问题、驱动缺失、依赖库冲突……这些问题让不少开发者…

作者头像 李华
网站建设 2026/4/13 22:45:41

《机器学习SVM从零到精通:图解最优超平面与软间隔实战》

文章目录 SVM一.SVM是什么&#xff1f;二.怎么学习SVM&#xff1f;三.为什么学习SVM&#xff1f;四.深入理解SVMdata -> 数据classifier -> 分类器optimization -> 最优化kernelling -> 核函数hyperplane -> 超平面 如何选取一个最佳的超平面Small Margin&#…

作者头像 李华
网站建设 2026/4/11 20:41:03

【Excel VBA 编程】第68讲:从结构体向数据字典的务实转型

在前两期&#xff0c;我们主要采用“结构体&#xff08;Type&#xff09; 函数”的方式来构建复杂的数据模型。这种方式的优点在于结构清晰、逻辑明确&#xff0c;便于理解和上手。然而&#xff0c;它也存在一些不足&#xff1a;数据与行为仅实现了初步解耦&#xff0c;数据扩展…

作者头像 李华
网站建设 2026/4/11 14:13:21

开源≠免费:如何通过内容营销推动商业GPU服务销售

开源≠免费&#xff1a;如何通过内容营销推动商业GPU服务销售 在人工智能项目从实验室走向生产线的过程中&#xff0c;一个看似简单却反复出现的问题是&#xff1a;为什么明明用了开源框架&#xff0c;成本还是居高不下&#xff1f;不少团队在初期选择 PyTorch 时&#xff0c;看…

作者头像 李华