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.
For example,
add(1); add(3); add(5);
find(4) -> true
find(7) -> false
解题思路:
关键点在于对重复数字的处理,用hashmap存储值,然后判断value-num == num的情况下,count是否>=2.
Java code:
public class TwoSum { private Map<Integer, Integer> map = new HashMap<Integer, Integer>(); // Add the number to an internal data structure. public void add(int number) { if(map.containsKey(number)){ map.put(number, map.get(number)+1); }else { map.put(number, 1); } } // Find if there exists any pair of numbers which sum is equal to the value. public boolean find(int value) { for(Integer i: map.keySet()) { int x = value - i; if(map.containsKey(x)){ if(x == i && map.get(i) >= 2){ return true; }else if( x != i){ return true; } } } return false; } } // Your TwoSum object will be instantiated and called as such: // TwoSum twoSum = new TwoSum(); // twoSum.add(number); // twoSum.find(value);
Reference:
1. http://www.cnblogs.com/EdwardLiu/p/4252598.html