您的位置:首页 > 教育 > 培训 > [补题记录]LeetCode 167.两数之和 II - 输入有序数组

[补题记录]LeetCode 167.两数之和 II - 输入有序数组

2025/5/20 10:16:21 来源:https://blog.csdn.net/joyride_run/article/details/139398322  浏览:    关键词:[补题记录]LeetCode 167.两数之和 II - 输入有序数组

StarryCoding 是面向计算机专业学生的综合学习与刷题平台,欢迎同学们的加入!

传送门:两数之和 II - 输入有序数组

Thought/思路

答案只需要返回两个下标,表示和为 target 的两个数。

我们可以用一个 map<int, vector> 维护原数组每个数存在哪些下标,然后对于每一个元素,查看是否存在它与 target 的差值。

当差值存在,并且 vector 中存在的元素与当前下标不是同一个时,就说明找到了答案。

Code/代码

class Solution {
public:vector<int> twoSum(vector<int>& numbers, int target) {std::map <int, std::vector <int>> mp;for (int i = 0; i < numbers.size(); ++ i) {mp[numbers[i]].push_back(i);}std::vector <int> ans;for (int i = 0; i < numbers.size(); ++ i) {int next = target - numbers[i];if (mp.count(next) && mp[next].size() > 0) {for (auto &item : mp[next]) {if (item != i) {ans.push_back(i + 1);ans.push_back(item + 1);break;}}}if (ans.size() == 2) break;}return ans;}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com