直接解法,两个循环搞定。
执行结果:
执行用时:176 ms, 在所有 JavaScript 提交中击败了11.39%的用户
内存消耗:41.3 MB, 在所有 JavaScript 提交中击败了87.42%的用户
通过测试用例:
57 / 57
用哈希表解决
执行结果:
执行用时:72 ms, 在所有 JavaScript 提交中击败了61.55%的用户
内存消耗:41.6 MB, 在所有 JavaScript 提交中击败了50.89%的用户
通过测试用例:
57 / 57
直接解法
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
const result = []
for(let i = 0; i < nums.length; i++) {
let findFlag = false
for(let j = 0; j < nums.length; j++) {
if(i === j) {
continue
}
if(nums[i] + nums[j] === target) {
result.push(i)
result.push(j)
findFlag = true
break
}
}
if(findFlag) {
break
}
}
return result
};
用哈希表解决
/**
* 因为组成targt的两个数是唯一的,因为答案是唯一的(key是唯一的),所以用哈希表可以解决
*
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function (nums, target) {
const result = {}
for (let i = 0; i < nums.length; i++) {
const curNum = nums[i]
// 差值
const dValue = target - curNum
if (result.hasOwnProperty(dValue)) {
return [result[dValue], i]
} else {
result[curNum] = i
}
}
return []
};