82. 落单的数
给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。
思路:读每一个数字,放入另外一个列表,如果不存在则放入,存在则删除,剩下来的就是落单的数了。
classSolution:
"""
@param: A: An integer array
@return: An integer
"""
defsingleNumber(self, A):
# write your code here
B=[]
foriinA:
ifinot inB:
B.append(i)
else:
B.remove(i)
returnB.pop()
83. 落单的数 II
给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字。
遍历A中的数字存入B,如果B中该数字有3个,删掉3个,剩下的就是落单的数了。
代码如下:
classSolution:
"""
@param: A: An integer array
@return: An integer
"""
defsingleNumberII(self, A):
# write your code here
B=[]
foriinA:
#if i not in B:
B.append(i)
ifB.count(i)==3:
B.remove(i)
B.remove(i)
B.remove(i)
returnB.pop()
运行结果:
84. 落单的数 III
给出2*n + 2个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字。
跟落单的数思路一样,
classSolution:
"""
@param: A: An integer array
@return: An integer array
"""
defsingleNumberIII(self, A):
# write your code here
B=[]
foriinA:
ifinot inB:
B.append(i)
else:
B.remove(i)
returnB
运行结果:
有的测试超时了,这样调用list的append和remove函数还不是最好的办法。
撤,明天再说。
领取专属 10元无门槛券
私享最新 技术干货