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
解法——HashMap
利用HashMap建立数字和数字出现的次数之间的映射。遍历HashMap中的数字,若map中存在target-i,则判断target-i是不是等于i。若等于i则判断i出现的次数是否大于1,大于1则返回True;若不等于i则返回true
public class TwoSum3 {
private HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
public void add(int key)
{
if(map.containsKey(key))
map.put(key,map.get(key)+1);
else
map.put(key, 1);
}
public boolean find(int target)
{
for(int i:map.keySet())
{
if((target-i==i&&map.get(i)>1)||(target-i!=i&&map.containsKey(target-i)))
return true;
// if(map.containsKey(target-i))
// {
// if(target-i!=i)
// return true;
// else
// {
// if(map.get(i)>1)
// return true;
// }
// }
}
return false;
}
}
开会员才能做的题,由于没有开所以没有运行时间和内存占用量
需要注意的是遍历map时判断条件的设置,如何判断很重要