1. 程式人生 > >leedcode記錄 ------1 .兩個總和

leedcode記錄 ------1 .兩個總和

https://leetcode.com/problems/two-sum/description/

問題描述:

給定一個整數陣列,返回兩個數字的索引,使它們相加到特定目標。

您可以假設每個輸入只有一個解決方案,並且您可能不會兩次使用相同的元素。

例:

給定nums = [2,7,11,15],target = 9,

因為nums [ 0 ] + nums [ 1 ] = 2 + 7 = 9,
返回[ 0,1 ]。

草稿寫了一遍大概的意思,

var twoSum = function (nums, target) {
        var numOne;
        var numTwo;
        for (var i = 0; i < nums.length; i++) {
            for (var j = i+1; j < nums.length; j++){
                if (nums[i] + nums[j] == target) {
                    numOne = i;
                    numTwo = j;
                    return {numOne,numTwo}
                }
            }
        }
    };

然後在leetcode上檢測執行,提示錯誤,我輸出的是物件,而題目要求的是陣列。

所以我要將 return 後面接一個數組,提前就建好一個空的陣列來接收預計的結果,最後新增結果給result並返回即可。

修改如下,通過,只是關於什麼時間複雜度,空間複雜度,我還不曾瞭解。日後再補相關知識。

 var twoSum = function (nums, target) {
        var result = [];
        for (var i = 0; i < nums.length; i++) {
            for (var j = i+1; j < nums.length; j++){
                if (nums[i] + nums[j] == target) {
                    result.splice(0,0,i,j);
                    return result
                }
            }
        }
    }