[LeetCode] Two Sum - Data structure design

本文介绍了一种名为TwoSum的数据结构设计,支持add和find两种操作。add操作将数字添加到内部数据结构中,find操作查找是否存在一对数字的和等于指定值。采用哈希表实现,确保了高效的查找和添加性能。

Two Sum - Data structure design

Design and implement a TwoSum class. It should support the following operations: add and find.

add - Add the number to an internal data structure. find - Find if there exists any pair of numbers which sum is equal to the value.

Time Complexity
add O(K)
find O(N)
Space Complexity
O(N) hashmap

思路

Initialize a hashmap, number added is key, how many times this number is added as value
For add method, add number into hashmap.
For find method, there are two situations that satisfy the requirement. If the number in hashmap which is target - number is different from the number in hashset, then just check if the map contains target number - the number in hashset. If the number is the same, then we should make sure it is not the same number, so map.get(value - keyNum) >= 2.

代码

public class TwoSum {

Map<Integer, Integer> map = new HashMap<Integer, Integer>();
// Add the number to an internal data structure.
public void add(int number) {
    // Write your code here
    if(!map.containsKey(number)) map.put(number, 1);
    else map.put(number, map.get(number) + 1);
}

// Find if there exists any pair of numbers which sum is equal to the value.
public boolean find(int value) {
    // Write your code here
    //it can't be the same number
    for(Integer keyNum : map.keySet()){
        if(value - keyNum == keyNum && map.get(value - keyNum) >= 2) return true;
        if(value - keyNum != keyNum && map.containsKey(value - keyNum)) return true;
    }
    return false;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值