Diseñe e implemente una clase TwoSum. Debe admitir las siguientes operaciones: agregar y buscar.
agregar: agrega el número a una estructura de datos interna.
buscar: encuentra si existe algún par de números cuya suma sea igual al valor.
Por ejemplo,
add(1); add(3); add(5); find(4) -> true find(7) -> false
Solución Java
Dado que la clase deseada necesita operaciones de adición y obtención, HashMap es una buena opción para este propósito.
public class TwoSum { private HashMap<Integer, Integer> elements = new HashMap<Integer, Integer>(); public void add(int number) { if (elements.containsKey(number)) { elements.put(number, elements.get(number) + 1); } else { elements.put(number, 1); } } public boolean find(int value) { for (Integer i : elements.keySet()) { int target = value - i; if (elements.containsKey(target)) { if (i == target && elements.get(target) < 2) { continue; } return true; } } return false; } } |