当前位置 : 首页 > 保养数据

《两数之和:哈希表高效解法,一次遍历找答案》

<|begin▁of▁sentence|># 1. 两数之和 ## 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 ## 思路 * 使用哈希表,将每一个元素的值和下标存储在哈希表中 * 遍历数组,对于每一个元素,计算目标值和当前元素的差值 * 在哈希表中查找差值,如果存在并且不是当前元素本身,返回两个元素的下标 ## 代码 ```cpp class Solution { public: vector twoSum(vector& nums, int target) { unordered_map heap; for(int i = 0; i < nums.size(); i++) { int r = target - nums[i]; if(heap.count(r)) { return {heap[r],i}; } heap[nums[i]] = i; } return {}; } }; ```

栏目列表