【Leetcode】【簡単】【1.両方の和】【JavaScript】
2811 ワード
テーマの説明
1.二つの数の和
与えられた整数配列nums 目標値targetと同じ配列の中から目標値を見つけてください. 二つ 整数を返します.
各入力は一つの答えにしか対応しないと仮定してもいいです.しかし、この配列の同じ要素を繰り返し利用することはできません.
例:
nums=[2,7,11,15]を与えられ、target=9
nums[0]+nums[1]=2+7=9なので[0,1]に戻ります.
ソース:スナップリンク:https://leetcode-cn.com/problems/two-sum著作権はネットの所有権を受領する.商業転載は公式の授権に連絡してください.商業転載ではないので、出典を明記してください.
答え:
解答1:
個人の考え方:
二つのポインタを定義します.一つは上の方を指します.一つは尾を指します.尾は頭に向かって進みます.ポインタが重なる時、頭のポインタは1を加えます.
2つの要素を合わせたら、タージに等しいまで.
216 ms
解答2:
既存の一番早い答え:
それともhash表の動作が速くて、空のオブジェクトを定義して、配列を巡回します.もしtargetから現在の要素から得られた値を引いたら、対象のkeyになります.
得られた値が対象のkeyでない場合は、この要素を対象としたkey、要素索引を対応するvalueとする.
44 ms
1.二つの数の和
与えられた整数配列nums 目標値targetと同じ配列の中から目標値を見つけてください. 二つ 整数を返します.
各入力は一つの答えにしか対応しないと仮定してもいいです.しかし、この配列の同じ要素を繰り返し利用することはできません.
例:
nums=[2,7,11,15]を与えられ、target=9
nums[0]+nums[1]=2+7=9なので[0,1]に戻ります.
ソース:スナップリンク:https://leetcode-cn.com/problems/two-sum著作権はネットの所有権を受領する.商業転載は公式の授権に連絡してください.商業転載ではないので、出典を明記してください.
答え:
解答1:
個人の考え方:
二つのポインタを定義します.一つは上の方を指します.一つは尾を指します.尾は頭に向かって進みます.ポインタが重なる時、頭のポインタは1を加えます.
2つの要素を合わせたら、タージに等しいまで.
216 ms
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
let start = 0;
let end = nums.length-1
while(start <= end){
if(start === nums.length-1){
break
}
if(start === end){
start++
end = nums.length-1
}
if(nums[start]+nums[end] === target){
return[start,end]
}
end--
}
};
解答2:
既存の一番早い答え:
それともhash表の動作が速くて、空のオブジェクトを定義して、配列を巡回します.もしtargetから現在の要素から得られた値を引いたら、対象のkeyになります.
得られた値が対象のkeyでない場合は、この要素を対象としたkey、要素索引を対応するvalueとする.
44 ms
var twoSum = function (nums, target) {
let obj = {};
for (var i = 0; i < nums.length; i++) {
if (obj[target - nums[i]] !== undefined) {
return [obj[target - nums[i]], i];
}
obj[nums[i]] = i;
}
};