1. 程式人生 > 其它 >兩數之和 II - 輸入有序陣列 --java

兩數之和 II - 輸入有序陣列 --java

給定一個已按照 非遞減順序排列 的整數陣列numbers ,請你從陣列中找出兩個數滿足相加之和等於目標數target 。

函式應該以長度為 2 的整數陣列的形式返回這兩個數的下標值。numbers 的下標 從 1 開始計數 ,所以答案陣列應當滿足 1 <= answer[0] < answer[1] <= numbers.length 。

你可以假設每個輸入 只對應唯一的答案 ,而且你 不可以 重複使用相同的元素。

示例 1:

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

輸入:numbers = [2,3,4], target = 6
輸出:[1,3]
示例 3:

輸入:numbers = [-1,0], target = -1
輸出:[1,2]

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

class Solution {
    public int[] twoSum(int[] numbers, int target) {
        int[] result = new int[2];
        int start = 0,end = numbers.length-1;
        while(start<end){
            if(numbers[end] + numbers[start] > target){  //當總和大於target時候,說明end下標大了
                end--;
            }else if(numbers[end] + numbers[start] < target){  //當總和小於target時候,說明start下標大了
                start++;  
            }else{
                result[0] = start+1;
                result[1] = end+1;
                return result;
            }
        }
        return result;
    }
}