1、题目

2、解法
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement)) {
return new int[] { map.get(complement), i };
}
map.put(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}
}
时间复杂度O(n),空间复杂度O(n)
3、思考
@1:哈希表的put(放键值)、get(取键值)、containsKey(找值)
@2:哈希表以空间换时间,最快时间复杂度为O(1)(找到正确的哈希函数),如果产生冲突,有可能退化为O(n)
@3: 如果没有值返回时,抛出异常。
两数之和算法解析
本文深入探讨了两数之和算法的实现方法,通过使用哈希表进行优化,达到O(n)的时间复杂度和空间复杂度。文章详细介绍了如何利用哈希表的put、get和containsKey操作来寻找目标值的补数,并在没有解决方案时抛出异常。
3395

被折叠的 条评论
为什么被折叠?



