[LeetCode] Two Sum - Data structure design

1652 단어 leetcodeLintCode

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 Complexityadd O(K)find O(N)Space ComplexityO(N) hashmap

사고의 방향


Initialize a hashmap, number added is key, how many times this number is added as valueFor 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 map = new HashMap();
// 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;
}

}

좋은 웹페이지 즐겨찾기