字节青训-寻找最大葫芦
问题描述
在一场经典的德州扑克游戏中,有一种牌型叫做“葫芦”。“葫芦”由五张牌组成,其中包括三张相同牌面值的牌 aa 和另外两张相同牌面值的牌 bb。如果两个人同时拥有“葫芦”,我们会优先比较牌 aa 的大小,若牌 aa 相同则再比较牌 bb 的大小。
在这个问题中,我们对“葫芦”增加了一个限制:组成“葫芦”的五张牌牌面值之和不能超过给定的最大值 maxmax。牌面值的大小规则为:A > K > Q > J > 10 > 9 > ... > 2,其中 A 的牌面值为1,K 为13,依此类推。
给定一组牌,你需要找到符合规则的最大的“葫芦”组合,并输出其中三张相同的牌面和两张相同的牌面。如果找不到符合条件的“葫芦”,则输出 “0, 0”。
测试样例
样例1:
输入:
n = 9, max = 34, array = [6, 6, 6, 8, 8, 8, 5, 5, 1]
输出:[8, 5]样例2:
输入:
n = 9, max = 37, array = [9, 9, 9, 9, 6, 6, 6, 6, 13]
输出:[6, 9]样例3:
输入:
n = 9, max = 40, array = [1, 11, 13, 12, 7, 8, 11, 5, 6]
输出:[0, 0]
解题思路:
问题理解
我们需要找到一组牌中符合“葫芦”规则的最大组合。具体来说,“葫芦”由三张相同牌面值的牌和两张相同牌面值的牌组成,并且这五张牌的牌面值之和不能超过给定的最大值 max。
数据结构选择
-
牌面值的映射:由于牌面值的大小规则是 A > K > Q > J > 10 > 9 > ... > 2,我们可以使用一个映射来表示这些牌面值,例如:
unordered_map<int, int> cardValue = {{1, 14}, // A{13, 13}, // K{12, 12}, // Q{11, 11}, // J{10, 10}, // 10{9, 9}, // 9{8, 8}, // 8{7, 7}, // 7{6, 6}, // 6{5, 5}, // 5{4, 4}, // 4{3, 3}, // 3{2, 2} // 2 };这样我们可以方便地比较牌面值的大小。
-
牌的计数:我们可以使用一个
std::unordered_map<int, int>来统计每种牌面值的出现次数。
算法步骤
- 统计每种牌面值的出现次数:遍历输入的牌数组,统计每种牌面值的出现次数。
- 寻找符合条件的“葫芦”:
- 遍历统计结果,找到所有出现次数大于等于3的牌面值,记为
a。 - 对于每个
a,再遍历统计结果,找到所有出现次数大于等于2的牌面值,记为b。 - 计算
a和b的牌面值之和,如果不超过max,则记录这个组合。
- 遍历统计结果,找到所有出现次数大于等于3的牌面值,记为
- 选择最大的“葫芦”:在所有符合条件的组合中,选择牌面值最大的
a和b。
转换成python的最终代码:
from collections import defaultdictdef solution(n, max_sum, array):# 牌面值的映射card_value = {1: 14, # A13: 13, # K12: 12, # Q11: 11, # J10: 10, # 109: 9, # 98: 8, # 87: 7, # 76: 6, # 65: 5, # 54: 4, # 43: 3, # 32: 2 # 2}# 统计每种牌面值的出现次数count = defaultdict(int)for card in array:count[card] += 1# 寻找符合条件的“葫芦”max_a = -1max_b = -1for a, count_a in count.items():if count_a >= 3:for b, count_b in count.items():if a != b and count_b >= 2:# 计算牌面值之和sum_value = card_value[a] * 3 + card_value[b] * 2if sum_value <= max_sum:# 更新最大组合if max_a == -1 or card_value[a] > card_value[max_a] or \(card_value[a] == card_value[max_a] and card_value[b] > card_value[max_b]):max_a = amax_b = b# 返回结果if max_a == -1 and max_b == -1:return [0, 0]else:return [max_a, max_b]# 测试用例
result1 = solution(9, 34, [6, 6, 6, 8, 8, 8, 5, 5, 1])
print(result1 == [8, 5])result2 = solution(9, 37, [9, 9, 9, 9, 6, 6, 6, 6, 13])
print(result2 == [6, 9])result3 = solution(9, 40, [1, 11, 13, 12, 7, 8, 11, 5, 6])
print(result3 == [0, 0])
到这里我以为就完了,谁知道!!!,这题面都还有坑

一开始还以为是测试用例有问题呢,看了好一会才反应过来,A这张牌,它是所有牌中最大的,但是它的牌面却是最小的,nndx,我以为只是默认A是最大的牌呢,这题太害人了
找到问题就好办了,也就是说要特判一次,如果P[1]的数量是大于等于3的,那就直接用它当maxA,如果是小于3但是大于等于2的,直接用来当maxB;
AC代码:
from collections import defaultdictdef solution(n, max_sum, array):# 牌面值的映射card_value = {1: 14, # A13: 13, # K12: 12, # Q11: 11, # J10: 10, # 109: 9, # 98: 8, # 87: 7, # 76: 6, # 65: 5, # 54: 4, # 43: 3, # 32: 2 # 2}# 统计每种牌面值的出现次数count = defaultdict(int)for card in array:adjusted_card = card if card != 1 else 14count[adjusted_card] += 1# 寻找符合条件的“葫芦”num3 = 0num2 = 0current_sum = 0for key, value in count.items():if value >= 3:for other_key, other_value in count.items():if other_key != key and other_value >= 2:sum_value = calculate_sum(key if key != 14 else 1, other_key if other_key != 14 else 1)if sum_value <= max_sum:if key > num3 or (key == num3 and other_key > num2):num3 = keynum2 = other_keycurrent_sum = sum_value# 返回结果if current_sum > 0:return [num3 if num3 != 14 else 1, num2 if num2 != 14 else 1]else:return [0, 0]def calculate_sum(num1, num2):return num1 * 3 + num2 * 2# 测试用例
result1 = solution(9, 34, [6, 6, 6, 8, 8, 8, 5, 5, 1])
print(result1 == [8, 5])result2 = solution(9, 37, [9, 9, 9, 9, 6, 6, 6, 6, 13])
print(result2 == [6, 9])result3 = solution(9, 40, [1, 11, 13, 12, 7, 8, 11, 5, 6])
print(result3 == [0, 0])
运行结果:
舒服了

相关文章:
字节青训-寻找最大葫芦
问题描述 在一场经典的德州扑克游戏中,有一种牌型叫做“葫芦”。“葫芦”由五张牌组成,其中包括三张相同牌面值的牌 aa 和另外两张相同牌面值的牌 bb。如果两个人同时拥有“葫芦”,我们会优先比较牌 aa 的大小,若牌 aa 相同则再比…...
el-checkbox勾选一个变成了勾选所有
问题: el-checkbox完成后勾选一个选项变成了所有选项都勾选了。非model值不正确,我的model值绑定的是数组,但是还是勾选一个变成了勾选多个。 解决 因为勾选的内容比较简单,且值不需要入库,所以我最开始定义的option为…...
ExpandingCard扩展卡片
文章目录 演示效果分析思路核心代码总结 源码 演示效果 分析思路 使用flex布局,每个卡片的宽度都由flex进行灵活调整交互可以增加和删除active,来实现宽度扩增和恢复还需要使用transition进行动画过渡,使得平滑切换 核心代码 首先创建一个…...
移远通信推出八款天线新品,覆盖5G、4G、Wi-Fi和LoRa领域
近日,全球领先的物联网整体解决方案供应商移远通信宣布,再次推出八款高性能天线新品,进一步丰富其天线产品阵容,更好地满足全球客户对高品质天线的更多需求。具体包括5G超宽带天线YECT005W1A和YECT004W1A、5G天线YECT028W1A、4G天…...
MySQL 9从入门到性能优化-创建触发器
【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…...
UE5 第三人称学习之动画 control rig
这个东西和建模软件里有的是一个东西,然后IK就是你动脚,他帮你算出小腿大腿该怎么动,FK就是你自己动了大腿,摆小腿,然后再摆脚 就是给每一根骨骼搞一个控制器,给他一个容易选中和操作更明显的图形作为控制…...
C++之--初见模板初阶
一、泛型编程 为了实现一个通用的函数,在此之前,我们学过函数重载,使用函数重载虽然可以实现,但是有一下几个不好的地方: 1. 重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时&a…...
Nature|用于无线监测颅内信号的植入式柔性超声波传感器(柔性传感/健康监测/植入式电子/水凝胶)
华中科技大学臧剑锋(Jianfeng Zang)、华中科技大学同济医学院附属协和医院姜晓兵(Xiaobing Jiang)和新加坡南洋理工大学陈晓东(Xiaodong Chen)团队,在《Nature》上发布了一篇题为“Injectable ultrasonic sensor for wireless monitoring of intracranial signals”的论…...
【和AI的《趣味》聊天】01 AI:你找茬是吧(
我: 以下哪个选项是中文? A.Chinese B.英文 AI: 我: 这不对吧,我说的是那个选项的语言是中文 AI: 非常抱歉,我之前的回答有误。您问的是哪个选项的语言是中文,那么答案应该是…...
“发放父作业单”是“过数”用例里面的内容吗
刘京城 2020-4-14 23:01 。。。。(注:这是一个人的昵称,不是省略号) 首先,执行者是同一个,那么思考焦点要关注“过数”用例是不是“发放父作业单”用例的一个步骤,和行为操作的频率无关,而是和责任有关&am…...
Linux补基础之:网络配置
目录 一、检查主机与虚拟机是否能正常通信 二、网络的连接模式 桥接模式 流程 特点 NAT模式 流程 特点 仅主机 流程 特点 三、修改静态IP 四、可能遇到的问题 防火墙 DNS 五、主机名更改 六、登录服务器 实际的大数据管理中,会有由很多服务器构成的…...
【flink】之kafka到kafka
一、概述 本文档旨在介绍如何使用Apache Flink从Kafka接收数据流,并将处理后的数据写入到另一个Kafka Topic中。Apache Flink是一个开源的流处理框架,能够处理无界和有界数据流,并且支持高吞吐量和低延迟的数据处理。通过Flink与Kafka的集成…...
微信小程序时间弹窗——年月日时分
需求 1、默认当前时间2、选择时间弹窗限制最大值、最小值3、每次弹起更新最大值为当前时间,默认值为上次选中时间4、 minDate: new Date(2023, 10, 1).getTime(),也可以传入时间字符串new Date(2023-10-1 12:22).getTime() html <view class"flex bb ptb…...
杂货 | 每日资讯 | 2024.11.1
注意:以下内容皆为AI总结 2024年11月1日,人工智能(AI)领域发生了多项重要事件,标志着技术发展的新阶段。本文将详细探讨以下三大事件: OpenAI为ChatGPT新增搜索功能IEEE发布《2025年及以后的技术影响》报…...
Genmoai-smol:专为单 GPU 优化的开源 AI 视频生成模型,低显存生成高质量视频
❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦! 🥦 微信公众号ÿ…...
RHCE8
一、防火墙 防火墙:防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。防火墙又可以分为硬件防火墙与软件防火墙。 硬件防火墙是由厂商设计好的主机硬件,这台硬件防火墙的操作系统主要以提供数据…...
长短期记忆网络(LSTM)如何在连续的时间步骤中处理信息
长短期记忆网络(LSTM)如何在连续的时间步骤中处理信息 长短期记忆网络(LSTM)是一种高级的循环神经网络(RNN),设计用来解决传统RNN在处理长时间序列数据时遇到的梯度消失或爆炸问题。LSTM通过其…...
MySQL基础(三)
一. 插入内容insert tips: (一)SQL中 表示 字符串,可以用 也可以用 " C/C、Java中, 表示字符," 表示字符串SQL/Python/JS,没有字符类型,只有字符串, 和 &qu…...
浏览器八股
面试系列文章 万字总结我在寒冬里的面试准备经历前端铜九铁十面试必备八股文——【HTML&CSS】前端铜九铁十面试必备八股文——【JavaScript】前端铜九铁十面试必备八股文——【Vue】前端铜九铁十面试必备八股文——【浏览器】前端铜九铁十面试必备八股文——【网络相关】前…...
华为机试HJ18 识别有效的IP地址和掩码并进行分类统计
首先看一下题 描述 请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。 所有的IP地址划分为 A,B,C,D,E五类 A类地址从1.0.0.0到126.255.255.255; B类地址从128.0.0.0到191.255.255.255; C类地址从192.0.…...
AI 视频创作系统:新媒体高效增收工具,AI 自动成片,持续输出优质内容
一、新媒体行业增收难,传统创作模式遇瓶颈如今做新媒体账号想要稳定盈利,离不开高频优质内容输出。但多数从业者普遍面临诸多难题:人工写脚本耗时费力,实拍剪辑流程繁琐,长期聘请专职人员开支巨大;内容产出…...
数据流计算模型在边缘到云场景的优化实践
1. 数据流计算模型的演进与挑战数据流计算模型自诞生以来,已经成为分布式系统领域处理大规模数据的核心范式。这种模型通过将计算过程抽象为有向无环图(DAG),其中顶点代表数据处理算子,边代表数据流动路径,…...
猫抓:创新视角下的浏览器资源嗅探技术完全指南
猫抓:创新视角下的浏览器资源嗅探技术完全指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓(cat-catch)…...
Windows 11 下 flash-attention 高效部署:避坑指南与预编译版本实战
1. 为什么Windows 11需要flash-attention? 在深度学习领域,Transformer模型已经成为自然语言处理、计算机视觉等任务的主流架构。而flash-attention作为优化后的自注意力实现,能够显著提升模型训练和推理效率。对于Windows 11用户而言&#…...
TimeMixer终极指南:如何用完全MLP架构实现时间序列预测的SOTA性能
TimeMixer终极指南:如何用完全MLP架构实现时间序列预测的SOTA性能 【免费下载链接】TimeMixer [ICLR 2024] Official implementation of "TimeMixer: Decomposable Multiscale Mixing for Time Series Forecasting" 项目地址: https://gitcode.com/gh_m…...
ESP32-S3 UF2 Bootloader修复指南:从原理到实战救砖
1. 项目概述:为什么ESP32-S3需要UF2 Bootloader?如果你玩过树莓派Pico或者一些Adafruit的开发板,可能会对那个插上USB后出现的U盘盘符有印象——直接把一个.uf2文件拖进去,固件就更新好了,简单得不像在搞嵌入式开发。这…...
系统级开发中的夜间MVP构建与Boneyard归档实践
1. 项目概述:一个名为“Boneyard”的夜间MVP构建最近在开源社区里,我注意到一个挺有意思的项目,叫sys-fairy-eve/nightly-mvp-2026-04-05-boneyard。光看这个标题,信息量就很大,它像是一个系统构建流水线上的一个特定快…...
告别默认视图:5个CloudCompare点云可视化高级技巧(颜色映射、尺寸分级、OpenGL优化)
告别默认视图:5个CloudCompare点云可视化高级技巧(颜色映射、尺寸分级、OpenGL优化) 在三维点云处理领域,可视化效果直接影响数据分析的深度与决策效率。CloudCompare作为开源点云处理利器,其默认视图设置往往难以满足…...
反激变压器优化设计实战:从磁芯选型到绕制工艺的工程指南
1. 项目概述:为什么反激变压器设计是开关电源的“心脏手术”? 在开关电源的世界里,反激拓扑(Flyback)就像一位“全能型选手”,从手机充电器到家电辅助电源,再到工业控制模块,几乎无处…...
高校实验室项目如何利用Taotoken的Token Plan套餐控制科研实验成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 高校实验室项目如何利用Taotoken的Token Plan套餐控制科研实验成本 对于高校实验室的科研团队和学生项目组而言,在探索…...
