Two Sum III - Data structure design

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
import scala.collection.mutable.Map

class TwoSum {

  var counter = Map[Int, Int]() withDefaultValue 0

  def add(num: Int): Unit = {
    counter += (num -> (counter(num) + 1))
  }

  def find(target: Int): Boolean = {
    for ((num, count) <- counter) {
      val diff = target - num
      val found = {
        if (diff == num) counter(num) > 1
        else counter(diff) > 0
      }
      if (found) return true
    }
    false
  }

}

val twoSum = new TwoSum
for (i <- Array(1, 3, 5))
  twoSum.add(i)

twoSum.find(4)
twoSum.find(7)

Last updated