Design and implement a TwoSum class. It should support the following operations: add and find.code
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.get
Example 1:it
add(1); add(3); add(5); find(4) -> true find(7) -> false
Example 2:io
add(3); add(1); add(2); find(3) -> true find(6) -> false
class TwoSum { Map<Integer, Integer> map; public TwoSum() { map = new HashMap<>(); } public void add(int number) { map.put(number, map.getOrDefault(number, 0)+1); } public boolean find(int value) { for (Map.Entry<Integer, Integer> entry: map.entrySet()) { int i = entry.getKey(); int j = value-i; if ((i == j && entry.getValue() >= 2) || (i != j && map.containsKey(j))) { return true; } } return false; } }
class TwoSum { Set<Integer> nums; Set<Integer> sums; /** Initialize your data structure here. */ public TwoSum() { nums = new HashSet<>(); sums = new HashSet<>(); } /** Add the number to an internal data structure.. */ public void add(int number) { Iterator<Integer> iterator = nums.iterator(); while (iterator.hasNext()) { sums.add(iterator.next()+number); } nums.add(number); } /** Find if there exists any pair of numbers which sum is equal to the value. */ public boolean find(int value) { return sums.contains(value); } }