package LeetCode_170
import java.util.*
/**
* 170. Two Sum III - Data structure design
* (Prime)
* 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.
Example 1:
add(1); add(3); add(5);
find(4) -> true
find(7) -> false
* */
class Solution {
//key: number, value: the number of appearance of this number
var map: HashMap<Int, Int> = HashMap()
fun add(number: Int) {
map.put(number, map.getOrDefault(number, 0) + 1)
}
/**
* @param value: An integer
* @return: Find if there exists any pair of numbers which sum is equal to the value.
*/
fun find(value: Int): Boolean {
for (key in map.keys) {
val toFind = value - key
//toFind + key = value, and toFind,key both exists in map
if (toFind == key && map.get(key) ?: 0 > 1) {
return true
} else if (toFind != key && map.containsKey(toFind)) {
return true
}
}
return false
}
}