leetcode-js面接問題|1.2の合計

5202 ワード

テーマ
一つの整数配列numsと一つの目標値targetを指定します.この配列の中から目標値としての二つの整数を見つけてください.そして、彼らの配列の下に戻ってください.
各入力は一つの答えにしか対応しないと仮定してもいいです.しかし、配列中の同じ要素は2回使用できません.
例:
   nums = [2, 7, 11, 15], target = 9

   nums[0] + nums[1] = 2 + 7 = 9
     [0, 1]
法を解く
1.二重循環
  • 時間の複雑度:O(n^2)
  • var twoSum = function(nums, target) {
        for (var i = 0; i < nums.length; i++) {
            var dif = target - nums[i];
            // j = i + 1                      
            for (var j = i + 1; j < nums.length; j++) {
                if(nums[j] == dif)
                    return [i,j];
            }
        }
    };
    
    2.保存しながら比較する
  • 時間の複雑度:O(n)
  • var twoSum = function(nums, target) {
        var temp = [];
        for(var i=0;i<nums.length;i++){
            var dif = target - nums[i];
            if(temp[dif] != undefined){
                return [temp[dif],i];
            }
            temp[nums[i]] = i;
        }
    };
    
    ソース:スナップリンク:https://leetcode-cn.com/problems/two-sum