如何高效计算集合的最小不可达数(Minimum Excludant,Mex)
本文详解最小不可达数(Mex)的概念与实现,重点讲解基于集合查找的Python高效算法,纠正常见语法错误,并提供可直接运行的完整代码及边界情况处理建议。
本文详解最小不可达数(Mex)的概念与实现,重点讲解基于集合查找的Python高效算法,纠正常见语法错误,并提供可直接运行的完整代码及边界情况处理建议。
最小不可达数(Minimum Excludant,简称 Mex)是组合博弈论和算法竞赛中的基础概念:给定一个非负整数集合 $ S $,Mex 定义为不属于 $ S $ 的最小非负整数。例如,$ \text{Mex}({0,1,2,4}) = 3 $,因为 0、1、2 存在,3 缺失;而 $ \text{Mex}({1,2,3}) = 0 $,因为 0 是首个未出现的非负整数。
✅ 正确实现原理
核心思路简洁高效:
SnapEdit
AI移除图片中的任何物体
- 将输入列表转为 set,实现 $ O(1) $ 成员检查;
- 从 mex = 0 开始递增,首次遇到 mex not in set 即返回该值;
- 时间复杂度最坏为 $ O(n + k) $($ k $ 为 Mex 值),空间复杂度 $ O(n) $,适用于绝大多数实际场景。
以下是修正后的标准实现(已修复原始代码中的缩进与冒号语法错误):
def mex(my_list):
s = set(my_list) # 转换为集合,提升查找效率
mex_val = 0
while mex_val in s: # 注意:冒号不可省略,且 return 必须与 while 对齐(在循环外)
mex_val += 1
return mex_val # ✅ 正确缩进位置:与 while 同级
# 测试用例
print(mex([1, 0, 2, 4])) # 输出: 3
print(mex([1, 2, 3])) # 输出: 0
print(mex([0, 1, 2, 3])) # 输出: 4
print(mex([])) # 输出: 0(空集的 Mex 为 0)
⚠️ 常见错误与注意事项
- 语法陷阱:原始代码中 return mex 若缩进至 while 内部,将导致函数在第一次检查后立即退出(返回 0 或 1),逻辑完全失效;同时 while 语句末尾缺失 : 会引发 SyntaxError。
-
数据类型安全:确保输入仅含非负整数。若存在负数或非整型元素(如字符串、浮点数),mex_val in s 可能行为异常,建议增加输入校验:
if not all(isinstance(x, int) and x >= 0 for x in my_list): raise ValueError("Input must contain only non-negative integers") - 性能优化提示:对于极大规模或 Mex 值极大的场景(如 $ S = {0,1,2,\dots,10^6-1} $),可改用排序+单次扫描($ O(n \log n) $),避免最坏 $ O(n + \text{Mex}) $ 的线性增长;但对一般用途,集合法更简洁鲁棒。
掌握 Mex 计算是理解 Nim 游戏、SG 函数等高级概念的第一步。本实现兼顾正确性、可读性与工程实用性,适合初学者快速上手并融入实际算法开发中。
如非特殊说明,本站内容均来自于网友自主分享,如有任何问题均请联系我们进行处理!
猜您喜欢
斗罗大陆:传承主线高效刷图队搭配思路
2026-07-07斗罗大陆传承高效刷图队阵容搭配,本期为玩家们量身推荐一套高效刷图队,让魂师们轻松实现“一键速刷”,下面就来看看这套阵容的具体配置与打法思路吧。 斗罗大陆:传承主线高效刷图队搭配思路: 一、高效刷图队 搭配思路:马红俊和宁荣荣破法放大队伍元素伤害,唐三旋风锤法大范围元素伤害 主C:唐三 流派:附伤旋风 通用魂技 涅槃复苏、巨人杀手、冲锋号角、坚定风采、不动龙钟 套装魂骨:泰坦巨猿套装 通用魂骨:赤魔...
我要当老祖资源高效分配指南
2026-07-03我要当老祖资源高效分配指南:灵石优先升功法与长老,宠物等成型后再培养;勾玉每日必花仙盟捐赠、宠物秘籍、体力及前期晶矿,剩余存着买皮肤(祝融、句灵等),竞技场备三套皮肤即可。商店兑换:仙盟换紫自选,梦境优先晶矿,竞技场换金碎片,坊市紫自选+晶矿+绿古宝,宠物商店换对应蛋,混元攒4000换金自选,宝库除灵宠丹、易容丹外全换。 我要当老祖资源高效分配指南 1.灵石(核心消耗优先级:功法>长老>宠物) 获...
讯飞听见:高效办公场景下的录音转写与文档同步
2026-06-28讯飞听见在办公场景的价值在于“转得准、理得清、用得上”,将录音秒变可检索、可编辑、可延展的结构化文档,支持实时录音边录边写、AI纪要生成、思维导图与AI写作等闭环应用。 ☞☞☞AI智能聊天,问答助手,AI智能搜索,多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 讯飞听见在办公场景中真正发挥价值,不在于“能转文字”,而在于“转得准、理得清、用得上”。它把录音这个原始信息载体,快速变成可检索、可编辑...
讯飞听见高效办公实战:从语音笔记到智能办公文档
2026-06-28讯飞听见通过“听、记、写、管”四步闭环实现办公提效。语音实时转写并结构化,支持多语种与方言,准确率近98%;自动生成会议纪要,含概要、要点、待办;AI写作延展输出模板化文档;跨设备协同统一归集至讯飞文档,支持协作与复用。 ☞☞☞AI智能聊天,问答助手,AI智能搜索,多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 讯飞听见不是简单把语音变文字,而是把日常办公中“听、记、写、管”四个动作串成一条高效...
讯飞听见文档整理功能:高效处理工作访谈与电话录音
2026-06-28讯飞听见文档整理功能聚焦工作访谈与电话录音场景,实现说话人自动区分、声纹记忆、打点纪要生成及多格式导出。它支持系统级内录与外录导入,提供语篇规整、热词优化、时间锚点待办清单,并适配PDF/Word/TXT导出及正式纪要模板。 ☞☞☞AI智能聊天,问答助手,AI智能搜索,多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 讯飞听见的文档整理功能,不是简单把录音变成文字,而是围绕工作访谈和电话录音这类高...
《最终幻想7:启示录》最高可达99级 武器Boss是可选
2026-06-15游戏总监滨口直树近日透漏了《最终幻想7:启示录》的新消息。在接受意大利媒体Everyeye.it采访时,部分武器Boss战将是可选,并且玩家在体验《最终幻想7:启示录》丰富的终局内容时,最高可以达到99级。 “在这方面,我希望向原作致敬,并保留原有的结构。所以,是的,一些武器会在主线剧情中出现并与之战斗。而另一些武器则会在世界地图的特定区域或地点出现,只能作为可选内容挑战。它们也会有各自独立的剧情...
《红色沙漠》游戏高效捕鱼方法介绍
2026-06-13《红色沙漠》中的抓鱼钓鱼也是游戏里比较重要的一种收入来源,而想要快速捕鱼就需要一些技巧,其中速度最快的捕鱼方法就是用鱼笼,捕鱼点位的位置就在佩伦城下方区域的格雷洛克渡口码头。 红色沙漠怎么快速捕鱼 本文内容来源于互联网,如有侵权请联系删除。
苹果笔记本怎么快速打开最近访问的文件夹_Finder高效快捷键【解析】
2026-06-04苹果笔记本可通过启用访达边栏“最近”智能文件夹、使用“打开最近的项目”菜单、Spotlight搜索加时间限定词、终端命令刷新缓存及路径栏跳转五种方式快速定位并打开最近访问的文件夹。 如果您在苹果笔记本上需要快速定位并打开最近访问的文件夹,但发现每次都要手动逐层导航或依赖记忆路径,则可能是由于未启用或未掌握访达(Finder)中内置的“最近”智能文件夹及关联快捷机制。以下是实现该目标的具体步骤: 一...
电脑截图快捷键是哪个?多种高效电脑截图技巧分享
2026-06-04Win+PrtScn一键全屏截图并自动保存至“图片/屏幕截图”文件夹;Alt+PrtScn精准截当前窗口;Win+Shift+S自由选区截图并支持标注;Mac用Command+Shift+3/4/4+空格实现全屏、区域、窗口截图。 你需要在会议中快速截取ppt某页重点内容,或向同事发送微信窗口里的错误提示,又或者保存网页长图却找不到保存按钮——这些场景下,掌握原生快捷键能让你三秒内完成截图,不用等...
红玉高效获取攻略 游戏升级材料快速收集指南
2026-06-04要说红玉产出最稳的地图,那必须是谢园残巷!这里堪称红玉的“稳定出产地”,平均每刷三到四轮就能收获一颗,欧气爆棚的玩家甚至能连续两场直接掉落,运气简直逆天!而且这张图的怪群密度恰到好处——既不会因怪物过于密集而手忙脚乱,也不会因分布太稀疏而空跑耗时,路线更是简洁明了:从入口一路直奔boss,全程无绕路、无隐藏点、无机关解谜,省下的时间足够多刷一轮,效率直接拉满。试想一下,你点开地图选中谢园残巷,进门...
