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
posted @ 2020-12-07 09:51  老鼠司令  阅读(45)  评论(0编辑  收藏  举报