LeetCode #170. Two Sum III - Data structure design
题目
170. Two Sum III - Data structure design
解题方法
构造函数中初始化一个字典dic,在add方法中把新元素加到字典里,如果已经在字典了就把值+1,find方法中遍历字典元素key,如果value - key不等于key,就看看字典中有没有值等于value - key的键,有的话返回True,没有的话继续找。如果value - key等于key,那要是key的值>1的话就返回True,否则继续找。
时间复杂度:O(n)
空间复杂度:O(n)
代码
class TwoSum:
def __init__(self):
self.dic = {}
def add(self, number: int) -> None:
if number not in self.dic:
self.dic[number] = 1
else:
self.dic[number] += 1
def find(self, value: int) -> bool:
for key in self.dic.keys():
counterpart = value - key
if counterpart != key:
if counterpart in self.dic:
return True
else:
if self.dic[key] > 1:
return True
return False