Two Sum III - Data structure design
题目
Design and implement a TwoSum class. It should support the following operations:add
andfind
.
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
解析
思路
图解
代码
class TwoSum {
private HashMap<Integer, Integer> map;
private List<Integer> list;
/** Initialize your data structure here. */
public TwoSum() {
map = new HashMap<>();
list = new ArrayList<>();
}
/** Add the number to an internal data structure.. */
public void add(int number) {
if(!map.containsKey(number)){
map.put(number, 1);
list.add(number);
}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) {
for(Integer num1 : list){
int num2 = value - num1;
if((num1 == num2 && map.get(num1)>1)||(num1 !=num2 && map.containsKey(num2))){
return true;
}
}
return false;
}
}