题目描述
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
注意:你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。
示例:输入:nums = [2,7,11,15], target = 9 → 输出:[0,1](解释:因为 nums[0] + nums[1] = 2 + 7 = 9)
解题思路
核心思路:利用哈希表(HashMap)的查询优势,减少时间复杂度。
-
遍历数组,对于每个元素 nums[i],计算其补数(target - nums[i]);
-
检查哈希表中是否存在该补数:若存在,直接返回补数的下标和当前下标 i;若不存在,将当前元素 nums[i] 和其下标 i 存入哈希表;
-
遍历结束后,必能找到唯一答案(题目保证每种输入对应一个答案)。
复杂度分析:时间复杂度 O(n)(仅遍历一次数组),空间复杂度 O(n)(哈希表最多存储 n 个元素)。