前言:
两数之和,梦开始的地方,就像abondan一样,直接让我abondan。
把两数之和放在第一题,对于代码小白非常不友好……
思路:
遍历一次数组,对于每个元素i,想查找数组中是否存在target-i。
提到查找,就会想到哈希表!
根据题目,稍加思考, 哈希表使用map,存储数与下标,因为返回值为下标。
值得注意的是,查找与存储的顺序有严格的要求:查找先于存储!如果先存储,则可能查找到自己!
代码:
class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int,int> has; for(int i=0;i<nums.size();i++){ if(has.count(target-nums[i])) return {i,has[target-nums[i]]}; has[nums[i]]=i; } return {0,0}; } };