以下是 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