力扣——第1题(C++)
B站讲的很好的老师:
【从零开始刷力扣学C++——两数之和】 https://www.bilibili.com/video/BV1tU1TYpEJL/?share_source=copy_web&vd_source=bb58b6e3e5f53973729fd5b59301b3dd
题目
知识点:
1.vector容器:
2.引用
3.哈希表
哈希表详解:
题解:
暴力解
class Solution {
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 {};
}
};
哈希表
class Solution {
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 {};
}
};
#开工第一帖##如果不上班,你会去做什么##硬件开发岗知多少##应届生被毁约被毁意向了怎么办##面试___岗的必刷题单#
查看21道真题和解析