解题思路
1.先将目标数组存入map映射,元素值与下标一一对应
2.遍历数组元素,判断target—nums【i】 是否存在(map里count())
3放回能够存在的下标
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
std::vector<int> ans;
std::unordered_map<int,int> m;
for(int i=0;i<nums.size();++i)
{
m[nums[i]]=i;
}
`
for(int i=0;i<nums.size();++i)
{
int t=target-nums[i];
if(m.count(t)&&m[t]!=i) //注意这里一定不能反了 先判断count()在判断m[t] 应为m【t】t可能任意数 导致map越界
{
ans.push_back(i);
ans.push_back(m[t]);
break;
}
}
return ans;
}
};
本文详细介绍了一种解决两数之和问题的高效算法。通过使用哈希表(unordered_map),该算法能在O(n)的时间复杂度内找到数组中两个数相加等于特定目标值的元素下标。文章提供了完整的C++代码实现,展示了如何构建哈希表并遍历数组以查找匹配项。
1588

被折叠的 条评论
为什么被折叠?



