十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Kimi LeetCode 3948. 字典序最大的 MEX 数组 Python3实现

Kimi    LeetCode 3948. 字典序最大的 MEX 数组 Python3实现 以下是 LeetCode 3948. 字典序最大的 MEX 数组 的 Python3 实现pythonclass Solution:def maximumMEX(self, nums: list[int]) - list[int]:n len(nums)# 1. 预处理后缀 MEXsuf[i] 表示子数组 nums[i:] 的 MEXsuf [0] * nseen set()mex 0for i in range(n - 1, -1, -1):seen.add(nums[i])while mex in seen:mex 1suf[i] mex# 2. 贪心构造答案每次取能达到后缀 MEX 的最短前缀ans []i 0while i n:target suf[i]# 如果后缀 MEX 为 0说明没有 0取一个元素即可得到 0if target 0:ans.append(0)i 1continue# 否则向右扩展直到当前前缀的 MEX 达到 target#即前缀中已包含 0, 1, ..., target-1cur set()cmex 0while cmex target:cur.add(nums[i])while cmex in cur:cmex 1i 1ans.append(target)return ans---核心思路步骤 说明后缀 MEX 预处理 suf[i] 表示从位置 i 到末尾的子数组的 MEX。它决定了当前步 result 中能达到的最大值贪心取最短前缀 若 suf[i] target则从 i 向右扩展收集齐 0, 1, ..., target-1 后立即断开。这样 append 了最大的 MEX同时留下尽可能多的元素给后续MEX 为 0 的特殊处理 若后缀中没有 0则每次取一个元素 MEX 都是 0直接逐个取即可复杂度- 时间复杂度O(n)每个元素最多被加入 set 两次后缀预处理 前缀扫描- 空间复杂度O(n)后缀数组与 set
返回列表