1. 程式人生 > >LeetCode做題記錄

LeetCode做題記錄

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,才意識到時間複雜度,對於菜雞的我第一次意識到資料結構的用處........