方法一:暴力法
function twoSum(nums, target) {for (let i = 0; i < nums.length; i++) {for (let j = i + 1; j < nums.length; j++) {if (nums[i] + nums[j] === target) {return [i, j];}}}return null;
}
方法二:哈希表
function twoSum(nums, target) {const map = new Map();for (let i = 0; i < nums.length; i++) {const complement = target - nums[i];if (map.has(complement)) {return [map.get(complement), i];}map.set(nums[i], i);}return null;
}
方法一:使用暴力法,通过两层循环遍历数组来查找符合条件的两个数。
方法二:使用哈希表,通过一次遍历数组,将每个数的值和索引存储在哈希表中,同时查找是否存在符合条件的数。
暴力法的时间复杂度为O(n^2)
,空间复杂度为O(1)
;而哈希表的时间复杂度为O(n)
,空间复杂度为O(n)
。