题目来源:https://leetcode-cn.com/problems/two-sum/
由于哈希查找的时间复杂度为 O(1),所以可以利用哈希容器 map 降低时间复杂度 遍历数组 nums,i
为当前下标,每个值都判断map中是否存在 target-nums[i] 的 key 值 如果存在则找到了两个值,如果不存在则将当前的
(nums[i],i) 存入 map 中,继续遍历直到找到为止 如果最终都没有结果则抛出异常 时间复杂度:O(n)
class Solution {
public int[] twoSum(int[] nums, int target) {
HashMap<Integer,Integer> map = new HashMap<>();
for(int i = 0;i<nums.length;i++){
int temp = target - nums[i];
if(map.containsKey(temp)){
return new int[]{map.get(temp),i};
}
map.put(nums[i],i);
}
throw new IllegalArgumentException("No two sum solution");
}
}