B站讲的很好的老师:
【从零开始刷力扣学C++——两数之和】 www.bilibili.com/video/BV1tU…
题目
知识点:
1.vector容器:
2.引用
3.哈希表
哈希表详解:
blog.csdn.net/qq_60831089…
题解
暴力解
public:
vector<int> twoSum(vector<int>& nums, int target) {
int len = nums.size();
int i=0;
int j=0;
for(int i=0;i<len;i++){
for(int j=i+1;j<len;j++){
if(nums[i]+nums[j]==target)
return {i,j};
}
}
return {};
}
};
哈希表
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int,int> hashtable;//创建哈希表,名称为hashtable
int len=nums.size();
for( int i=0;i<len;i++ ){
auto it = hashtable.find( target - nums[i] );//迭代器it指向target - nums[i]
if( it!=hashtable.end() ){
//元素存在
return { it->second , i };//it->second指向元素对应的下标
}
//元素不存在,则存入哈希表
hashtable.insert( { nums[i] , i } );
}
return {};
}
};