算法1
思路:
这个题首先定义一个哈希表,然后遍历整个数组,,就比如原题数据的1,2,3,4,x=1,题目给的target=7,那么target-1=7,然后利用count函数判断存不存在,如果存在输出,如果不存在,insert在哈希表里面
学习笔记:
知道原理,但是起初我是不太理解unordered_set ,因为看到好多题目中都会用到这个,查阅之后发现,unordered_set[HTML_REMOVED] s其实就是一种无序集合,底层实现是采用哈希表,.empty().size().maxsize()都是比较常见的,其次//查找函数 find() 通过给定主键查找元素
unordered_set[HTML_REMOVED]::iterator find_iter = c1.find(1);
value出现的次数 count() 返回匹配给定主键的元素的个数
c1.count(1);
返回元素在哪个区域equal_range() 返回值匹配给定搜索值的元素组成的范围
pair<unordered_set<int>::iterator, unordered_set<int>::iterator> pair_equal_range = c1.equal_range(1);
插入函数 emplace()
c1.emplace(1);
插入函数 emplace_hint() 使用迭代器
c1.emplace_hint(ite_begin, 1);
插入函数 insert()
c1.insert(1);
删除 erase()
c1.erase(1);//1.迭代器 value 区域
清空 clear()
c1.clear();
交换 swap()
c1.swap(c2);
C++ 代码
class Solution {
public:
vector<int> findNumbersWithSum(vector<int>& nums, int target) {
unordered_set<int> s;//首先定义一个哈希表
for(auto x:nums){
if(s.count(target-x)){//判断存不存在,可以利用count函数
return{x,target-x};
}
s.insert(x);
}
}
};