当前位置 : 首页 > 购买指南

《两数之和:哈希表高效解题法》

<|begin▁of▁sentence|># 1. 两数之和 ## 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 ## 示例 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] ## 分析 使用哈希表,将每个数字作为key,索引作为value,然后遍历数组,判断target-nums[i]是否在哈希表中,如果在并且索引不是当前索引,则返回结果 ## 代码 class Solution { public: vector twoSum(vector& nums, int target) { unordered_map m; for(int i = 0; i < nums.size(); i++){ m[nums[i]] = i; } for(int i = 0; i < nums.size(); i++){ if(m.count(target - nums[i]) && m[target - nums[i]] != i){ return {i, m[target - nums[i]]}; } } return {}; } }; > 题目网址:[https://leetcode-cn.com/problems/two-sum/](https://leetcode-cn.com/problems/two-sum/)

栏目列表