【力扣专题栏】两数之和,两种解法实现该题。
题解目录
- 1、题目描述+解释
- 2、算法原理解析
- 3、代码编写
- (1)、暴力解法代码
- (2)、利用哈希表解题代码
1、题目描述+解释
2、算法原理解析
3、代码编写
(1)、暴力解法代码
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int i=0;
int n=nums.size();
for(i=0;i<n;i++)
{
int j=0;
for(j=i+1;j<nums.size();j++)
{
if(nums[i]+nums[j]==target)
{
return {i,j};
}
}
}
return {};
}
};
(2)、利用哈希表解题代码
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
//创建哈希
unordered_map<int,int> hash;//存储的是键值对<nums[i],i>
int i=0;
for(i=0;i<nums.size();i++)
{
//先判断原哈希表中是否存在target-nums[i]
int x=target-nums[i];
if(hash.count(x))
{
//若存在就返回
return {hash[i],i};
}
//不存在就把该数放进哈希表中
hash[nums[i]]=i;
}
return {-1,-1};
}
};