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这道题的add方法用arraylist实现,find还是跟之前two sum的方法相似,遍历整个arraylist,用hashmap找value-number的值,有的话返回true,没有的话存下当前的值进hashmap。代码如下:
public class TwoSum {
private ArrayList<Integer> arraylist = new ArrayList<Integer>();
// Add the number to an internal data structure.
public void add(int number) {
arraylist.add(number);
}
// Find if there exists any pair of numbers which sum is equal to the value.
public boolean find(int value) {
HashSet<Integer> hs = new HashSet<Integer>();
for (Integer number:arraylist) {
if (hs.contains(value - number)) {
return true;
} else {
hs.add(number);
}
}
return false;
}
}
// Your TwoSum object will be instantiated and called as such:
// TwoSum twoSum = new TwoSum();
// twoSum.add(number);
// twoSum.find(value);