[Leetcode] 1.Two Sum(unordered_map)
2024-09-02 21:03:10
1.首先想到的方法就是两个for循环全部遍历,代码如下,可通过,但效率太低
class Solution
{
public:
vector<int> twoSum(vector<int> nums, int target)
{
vector<int> res;
for (int i = ; i < nums.size(); i++)
{
for (int j = i + ; j < nums.size(); j++)
{
if (nums[j] == target - nums[i])
{
res.push_back(i);
res.push_back(j);
}
}
}
return res;
}
};
2.使用unordered_map,遍历vector中每个元素,并在hash表中通过find()查找目标元素,若找到则写入结果,否则将当前元素加入到hash表中。(每次调用find()函数是为了判断当前元素与其前面的元素之和是否为target值)。
class Solution
{
public:
vector<int> twoSum(vector<int> nums, int target)
{
unordered_map<int,int> hash;
vector<int> res;
for (int i = ; i < nums.size(); i++)
{
int numTofind = target - nums[i]; if(hash.find(numTofind) != hash.end())
{
res.push_back(hash[numTofind]);
res.push_back(i);
}
else
{
hash[nums[i]] = i;
}
}
return res;
} };
最新文章
- 我与ADO.NET二三事
- [Word]中批量修改图片大小和缩放比例方法
- SQL AND &; OR 运算符
- 20145218 《Java程序设计》第三周学习总结
- 十天学会单片机Day4串行口通信
- linux直接启动到字符界面或从字符界面启动到图形化界面
- Codeforces #350
- linux服务器证书安装指引
- 12个Sublime Text应用技巧和诀窍
- Flexbox学习总结
- 即时通讯软件openfire+spark+smack
- App专项测试之弱网测试
- python模块:xml.dom.minidom
- Linux文件系统3--打开文件
- js篇之对象数据属性与存取器属性
- 一 JAVA整体概念以及安装部署
- C++函数类型
- 混合开发中ios兼容问题
- C++类间转换之dynamic_cast
- Ubuntu每次开机后提示:检测到系统程序出现问题的解决方法