1. 两数之和题解

直接解法,两个循环搞定。

执行结果:
执行用时: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 []
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值