难度等级:简单
上一篇算法:
力扣此题地址:
1.题目:两数之和
2.解题思路:
利用hash表的快速查找功能,每次往hash表中添加一个键值对时,先判断hash表中是否有target - num[i],有的话就相当于数组中包含了两个数相加等于target,那么就返回这两个数值在数组中的下标位置;如果没有则将 num[i] 添加到hash表中。
3.代码实现:
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for(int i = 0; i< nums.length; i++) {
if(map.containsKey(target - nums[i])) {
return new int[] {map.get(target-nums[i]),i};
}
map.put(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}
}
HashMap中put()、get()方法的用法:
put(key,value):添加key-value键值对
get(key):返回key对应的value,不能通过get(value)获取对应的key
key不能重复,但value可以重复,支持key和value为null。