You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

代码修复请求:查找列表极值间缺失最小数的逻辑错误

修复列表最小/最大值及区间内最小缺失数的代码问题

你的代码在处理测试用例pt=[1, 3, -3, -2, 8, -1]时输出错误,核心原因是嵌套循环的逻辑混乱,无法正确遍历最小值到最大值区间内的所有整数,导致提前误判了缺失的最小数。

原代码问题分析

  • 嵌套的for和while循环仅通过minimum_number + j与nums[i]比较,没有覆盖区间内的所有整数,当排序后数组存在连续序列时,会错误跳过真正的缺失值。
  • 比如在测试用例pt中,排序后数组为[-3,-2,-1,1,3,8],原代码会误将-1判定为缺失值,而实际区间内最小的缺失值是0。

修复后的代码

class Solution(object):
    def minmax(self, nums):
        sorted_nums = sorted(nums)
        min_val = sorted_nums[0]
        max_val = sorted_nums[-1]
        num_set = set(sorted_nums)
        
        # 查找[min_val, max_val]区间内不在列表中的最小整数
        missing_min = None
        current = min_val
        while current <= max_val:
            if current not in num_set:
                missing_min = current
                break
            current += 1
        
        return [min_val, missing_min, max_val]

if __name__ == "__main__":
    pt = [2, -4, 8, -5, 9, 7]
    lt = [1, 3, -3, -2, 8, -1]
    print(Solution().minmax(pt))  # 输出 [-5, -3, 9]
    print(Solution().minmax(lt))  # 输出 [-3, 0, 8]

修复逻辑说明

  1. 排序与边界获取:先对数组排序,直接获取最小值和最大值。
  2. 快速查找优化:将数组元素存入集合,实现O(1)时间复杂度的存在性判断。
  3. 遍历找缺失值:从最小值开始逐个遍历整数,找到第一个不在集合中的数,即为区间内最小的缺失数。
  4. 结果返回:按要求返回包含最小值、缺失最小数、最大值的列表。

内容的提问来源于stack exchange,提问作者klaus19

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 00:55:13