170. Two Sum III - Data structure design

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
    }
}

 

posted @ 2020-11-07 11:35  johnny_zhao  阅读(82)  评论(0编辑  收藏  举报