• leetcode--js--Two Sum


    问题描述:

    给定一个整数数列,找出其中和为特定值的那两个数。

    你可以假设每个输入都只会有一种答案,同样的元素不能被重用。

    示例:

    给定 nums = [2, 7, 11, 15], target = 9
    
    因为 nums[0] + nums[1] = 2 + 7 = 9
    所以返回 [0, 1]

    我的答案:

     1 /**
     2  * @param {number[]} nums
     3  * @param {number} target
     4  * @return {number[]}
     5  */
     6 var twoSum = function(nums, target) {
     7              var a=[];
     8             for(var i=0;i<nums.length-1;i++){
     9                 for(var j=i+1;j<nums.length;j++){
    10                     if(nums[i]+nums[j]==target){
    11                         a.push(i);
    12                         a.push(j);
    13                     }
    14                 }
    15             }
    16             return a;
    17 };

    优秀答案:

    参考 http://www.cnblogs.com/kiznaiver1998/p/8605809.html

    解题思路:构造了arr{ key:value} 对象。将target-nums[i] 差值放在arr{ }对象中,并存储其位置i。然后每次就在arr{ }对象中找有没有对应的数即可。

    function twoSum(nums, target) {
        var arr = {};
        for (var i = 0; i < nums.length; i++) {
            if (typeof(arr[nums[i]]) !== "undefined"){
                return [arr[nums[i]], i];                        
            }                         
            arr[target - nums[i]] = i;
        }
    }
  • 相关阅读:
    XidianOJ 1073 Nunchakus
    XidianOJ 1024 2的幂次表示
    XidianOJ 1072 National Disaster
    XidianOJ 1093 一元三次方程
    中国剩余定理
    bzoj2818(欧拉函数递推)
    poj2311(博弈论,sg函数)
    contesthunter#46-A(分块)
    Tree,点分治
    poj3580(splay 毒瘤题)
  • 原文地址:https://www.cnblogs.com/hiluna/p/8748207.html
Copyright © 2020-2023  润新知