本文主要是介绍两数之和--力扣1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
两数之和
- 题目
- 思路
- C++代码
题目
思路
根据题目要求,元素不能重复且不需要排序,我们这里使用哈希表unordered_map。注意题目说了只对应一种答案。
所以我们在循环中,使用目标值减去当前循环的nums[i],得到差值,如果我们在map中能够找到这个差值,就说明存在两个整数的和为目标值。
如果没有找到,就将当前循环的nums[i]以及下标i放入map中,以便后续查找差值。
C++代码
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> map;for (int i = 0; i < nums.size(); i++) {//在map中找差值auto iter = map.find(target - nums[i]);if (iter != map.end()) {//找到即返回两个下标return {iter->second, i};}//没找到将当前的值和下标插入map中map.insert(pair<int, int>(nums[i], i));}return {};}
};
这篇关于两数之和--力扣1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!