题目
设计b并实现一个 TwoSum 类。他需要支持以下操作:add 和 find。
add -把这个数添加到内部的数据结构。
find -是否存在任意一对数字之和等于这个值
vector
-
动态数组
-
允许重复
-
声明 初始化
- List item
- vector nums; 空的默认为0
- nums.push_back(1);
- nums.empty();
- nums.size();
- 移除所有元素 nums.clear();
find方法的改进
对算法的执行效率改进 👇
利用map,可以以O(1)的时间进行全局查找
所以时间复杂度为O(N)
bool find(int value){
Map<Integer,map> map = new HashMap<>();
for(int i =0 ; i<num.size();i++){
int target = value -num[i];
if(map.contains(target)){
return new int[]{i,map.get(target)};//通过值获取到下标
}
map.put(num[i],i);//key,value
}
throw new IllegalArgumentException("unfind!");
}
``