1. 程式人生 > >輸入有序陣列 #陣列 #雙指標 #二分查詢

輸入有序陣列 #陣列 #雙指標 #二分查詢

給定一個已按照升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。
函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。

說明:
返回的下標值(index1 和 index2)不是從零開始的。
你可以假設每個輸入只對應唯一的答案,而且你不可以重複使用相同的元素。

示例:
輸入: numbers = [2, 7, 11, 15], target = 9
輸出: [1,2]
解釋: 2 與 7 之和等於目標數 9 。因此 index1 = 1, index2 = 2 。

解法一:

兩次遍歷,暴力計算。使用第1個數與後面的每個數之和判斷是否等於目標值、再用第2個數字做同樣的操作,直到完全相等,返回索引值+1

// 2018/11/18 Sun 下午
var twoSum = function(numbers, target) {
    var len=numbers.length
    for(var i=0;i<len;i++){
        for(var x=i+1;x<len;x++){
            if(target-numbers[i]==numbers[x]){
                return [i+1,x+1]
            }
        }
    }
};

17 / 17 個通過測試用例
執行用時:264 ms

解法二: