Sha*_*lal -3 set multiset python-3.x
我试图解决一些hackerrank问题,我遇到了一个与multiset相关的问题。我试过这段代码,但我有点困惑我在哪一点上犯了错误?
class Multiset:
def __init__(self):
self.items=[]
def add(self, val):
# adds one occurrence of val from the multiset, if any
self.items.append(val)
def remove(self, val):
# removes one occurrence of val from the multiset, if any
if len(self.items):
if val in self.items:
self.items.remove(val)
def __contains__(self, val):
if val in self.items:
return True
return False
def __len__(self):
# returns the number of elements in the multiset
return len(self.items)
if __name__ == '__main__':
Run Code Online (Sandbox Code Playgroud)
小智 5
关于您的代码 .add 是带有列表的无效语法,此处应使用 .append ,并且在删除之前我们必须检查 val 是否已存在于列表中。如果它存在,那么只有我们应该删除它。
#!/bin/python3
import math
import os
import random
import re
import sys
class Multiset:
def __init__(self):
self.items = []
def add(self, val):
#adds one occurrence of val from the multiset, if any
return self.items.append(val)
pass
def remove(self, val):
# removes one occurrence of val from the multiset, if any
if self.items.count(val) != 0:
return self.items.remove(val)
pass
def __contains__(self, val):
# returns True when val is in the multiset, else returns False
return val in self.items
def __len__(self):
# returns the number of elements in the multiset
return len(self.items)
if __name__ == '__main__':
def performOperations(operations):
m = Multiset()
result = []
for op_str in operations:
elems = op_str.split()
if elems[0] == 'size':
result.append(len(m))
else:
op, val = elems[0], int(elems[1])
if op == 'query':
result.append(val in m)
elif op == 'add':
m.add(val)
elif op == 'remove':
m.remove(val)
return result
q = int(input())
operations = []
for _ in range(q):
operations.append(input())
result = performOperations(operations)
fptr = open(os.environ['OUTPUT_PATH'], 'w')
fptr.write('\n'.join(map(str, result)))
fptr.write('\n')
fptr.close()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15116 次 |
| 最近记录: |