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

Python容器移除整数异常:部分用例结果不符求助

整数集合操作的REMOVE功能异常排查

问题背景

这段代码旨在实现整数的添加、存在检查与移除功能,返回对应操作结果。目前ADD和EXISTS功能正常,但REMOVE功能在部分测试用例中结果异常。

原代码

def solution(queries):
    container = set()
    results = []
    for query in queries:
        operation, value = query
        if operation == "ADD":
            container.add(int(value))
            results.append("")
        elif operation == "REMOVE":
            removed_value = int(value)
            if removed_value in container:
                container.remove(removed_value)
                results.append("true")
            else:
                results.append("false")
        elif operation == "EXISTS":
            if int(value) in container:
                results.append("true")
            else:
                results.append("false")
    return results

测试用例对比

第一组测试用例(结果符合预期)

查询列表:

[["ADD","2"], 
 ["ADD","3"], 
 ["ADD","9"], 
 ["REMOVE","10"], 
 ["REMOVE","5"], 
 ["REMOVE","5"], 
 ["REMOVE","9"], 
 ["REMOVE","2"], 
 ["REMOVE","2"], 
 ["REMOVE","9"], 
 ["EXISTS","10"], 
 ["EXISTS","2"], 
 ["EXISTS","3"], 
 ["EXISTS","9"], 
 ["ADD","10"], 
 ["EXISTS","10"]]

输出结果:

["", "", "", "false", "false", "false", "true", "true", "false", "false", "false", "false", "true", "false", "", "true"]

第二组测试用例(结果不符)

查询列表:

[["ADD","0"], 
 ["ADD","1"], 
 ["ADD","2"], 
 ["REMOVE","1"], 
 ["ADD","0"], 
 ["ADD","1"], 
 ["ADD","2"], 
 ["ADD","1"], 
 ["REMOVE","2"], 
 ["EXISTS","2"], 
 ["REMOVE","2"], 
 ["EXISTS","2"], 
 ["REMOVE","2"], 
 ["REMOVE","1"], 
 ["EXISTS","1"], 
 ["REMOVE","1"], 
 ["EXISTS","1"], 
 ["REMOVE","1"], 
 ["EXISTS","1"], 
 ["REMOVE","1"], 
 ["REMOVE","0"], 
 ["EXISTS","0"], 
 ["REMOVE","0"], 
 ["EXISTS","0"], 
 ["REMOVE","0"], 
 ["ADD","0"], 
 ["EXISTS","0"]]
  • 预期结果:
["", "", "", "true", "", "", "", "", "true", "true", "true", "false", "false", "true", "true", "true", "false", "false", "false", "false", "true", "true", "true", "false", "false", "", "true"]
  • 实际结果:
["", "", "", "true", "", "", "", "", "true", "false", "false", "false", "false", "true", "false", "false", "false", "false", "false", "false", "true", "false", "false", "false", "false", "", "true"]

问题原因

核心问题在于代码使用了**set作为存储容器,而set的特性是不允许重复元素**。当执行多次ADD同一个值时,set只会保留一个实例,这就导致后续的REMOVE操作无法处理“重复添加同一元素需要多次移除”的场景。

比如第二组用例中:

  • 连续执行["ADD","1"]两次,set里只会有一个1
  • 第一次REMOVE("1")后,set里的1已经被删除,后续的REMOVE("1")都会返回false,但预期结果中需要多次返回true,这就和实际行为产生了冲突。

修复方案

方案1:使用列表实现(直观处理重复元素)

def solution(queries):
    container = []
    results = []
    for query in queries:
        operation, value = query
        val = int(value)
        if operation == "ADD":
            container.append(val)
            results.append("")
        elif operation == "REMOVE":
            if val in container:
                container.remove(val)
                results.append("true")
            else:
                results.append("false")
        elif operation == "EXISTS":
            results.append("true" if val in container else "false")
    return results

方案2:使用Counter统计次数(更高效)

from collections import Counter

def solution(queries):
    container = Counter()
    results = []
    for query in queries:
        operation, value = query
        val = int(value)
        if operation == "ADD":
            container[val] += 1
            results.append("")
        elif operation == "REMOVE":
            if container[val] > 0:
                container[val] -= 1
                results.append("true")
            else:
                results.append("false")
        elif operation == "EXISTS":
            results.append("true" if container[val] > 0 else "false")
    return results

这两个方案都能正确处理重复元素的添加和移除,匹配第二组测试用例的预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:42:05