LeetCode做題記錄
阿新 • • 發佈:2018-12-10
1.給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。
你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。
示例:
給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
// var twoSum = function(nums, target) { // var result=[]; // for(var i=0;i<nums.length-1;i++){ // for(var j=i+1;j<nums.length;j++){ // if(nums[i]+nums[j]==target){ // result.push(i); // result.push(j); // return result; // } // } // } // return false; // }; var twoSum = function(nums, target) { const hash = {}; for (let n, i = 0, l = nums.length; i < l; ++i) { n = nums[i]; if (hash[n] >= 0) { return [hash[n], i] } hash[target - n] = i } }; var testCase = [2, 7, 11, 15]; var result = twoSum(testCase, 9); console.log(result.toString() === '1,2');
一開始就直接用了兩個迴圈,後面百度發現很多人都是用hash,才意識到時間複雜度,對於菜雞的我第一次意識到資料結構的用處........