Two Sum III

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

A simpler approach is to store each input into a hash table with the input as key and its count as value. To find if a pair sum exists, just iterate through the hash table in O(n) runtime. Make sure you are able to handle duplicates correctly. 

 

 1 public class TwoSum{
 2     //Firstly, we create a hashmap
 3     Map<Integer, Integer> hm = new HashMap<>();
 4 
 5     public void add(int number){
 6         int count = hm.containsKey(number) ? hm.get(number): 0;
 7         hm.put(number, count +1);
 8    }
 9 
10    public boolean find(int value){
11         //The Map.Entry interface enables you to work with a map entry
12         for(Map.Entry<Integer, Integer> entry: hm.entrySet()){
13             int num = entry.getKey();
14             int r = value - num;
15             if(r == num){
16                 // For duplicates, ensure there are at least two individual numbers
17                 if(entry.getValue() >= 2) return true;
18              }else if(hm.containsKey(r)){
19                 return true;
20             }
21         }
22         return false;
23   }
24 }                    

 

更多相关文章
  • Combination Sum III Find all possible combinations of k numbers that add up to a number n, given that only n
  • LeetCode216. Combination Sum III
    Combination Sum III Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each co
  • 原题链接在这里:https://leetcode.com/problems/combination-sum-iii/ 与Combination Sum II相似,不同的是中不是所有元素相加,只是k个元素相加. 所以在把item的copy 加到res前需要同时满足item.size() == k 和
  • Design and implement a TwoSum class. It should support the following operations: add and find. add - Add the
  • LeetCode 筆記27 Two Sum III
    Design and implement a TwoSum class. It shoul
  • Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be
  •   Path Sum I  刚开始想用回溯算法,但是后来发现有负数的情况下这种方法不行,所以就不能用回溯算法了,直接用简单粗暴的递归算法. /** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left
  • Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be
一周排行