LeetCode: 面试题 16.24. 数对和
哈希表
时间复杂度: O ( N ) O(N) O(N)
比双指针要优一点。
遍历数组, 哈希表中 找 target - n 元素 , 找到了记录答案,找不到存入 哈希表。
哈希表
class Solution {
public List<List<Integer>> pairSums(int[] nums, int target) {
List<List<Integer>> ans = new ArrayList<>();
Map<Integer, Integer> map = new HashMap<>();
for(int n : nums){
int x = target - n;
Integer val = map.get(x);
if(val != null && val > 0){
List<Integer> list = new ArrayList<>();
list.add(n);
list.add(x);
ans.add(list);
map.put(x, val - 1);
continue ;
}
// count + 1
map.put(n, map.getOrDefault(n, 0) + 1);
}
return ans;
}
}