对于下面的代码,我遇到了一些问题,并且不完全确定出了什么问题。这个想法是添加整数,检查它们是否存在,并能够删除它们,同时附加到正确的值。代码很简单,ADD 和 EXIST 似乎工作顺利。当尝试实现 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
因此,对于我输入的第一个查询列表,结果与预期结果完全匹配:
queries:
[["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"]]
输出结果:["", "", "", "假", "假", "假", "真", "真", "假", "假", "假", "假", “真”、“假”、“”、“真”]
但是,当我尝试下一组查询时,我收到一些错误:
queries:
[["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", “真”、“真”、“真”、“假”、“假”、“假”、“假”、“真”、“真”、“真”、“假”、“假”、“” ,“真实”]
实际结果:[“”,“”,“”,“真”,“”,“”,“”,“”,“真”,“假”,“假”,“假”,“假”, “真”、“假”、“假”、“假”、“假”、“假”、“假”、“真”、“假”、“假”、“假”、“假”、“” ,“真实”]
有人可以帮我找出我做错了什么吗?在我 100% 确定我的问题之前,我不想继续从这里学习。
您的容器是
set()
并且集合不能包含重复项 - 您添加两次 2
,然后删除 2
并期望集合中有 2
(这不是真的)。
将容器更改为
list()
:
def solution(queries):
container = list() # <-- change set() to list()
results = []
for query in queries:
operation, value = query
if operation == "ADD":
container.append(int(value)) # <-- .append() here instead of .add()
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