給定一個已按照升序排列 的有序數組,找到兩個數使得它們相加之和等於目標數。數組
函數應該返回這兩個下標值index1 和 index2,其中 index1 必須小於 index2。函數
說明:spa
示例:指針
輸入: numbers = [2, 7, 11, 15], target = 9 code
輸出: [1,2] blog
解釋: 2 與 7 之和等於目標數 9 。所以 index1 = 1, index2 = 2 。 get
尋找目標元素和,能夠適用雙指針,兩元素首先定在兩端,兩數之和不斷和目標值比較:class
兩指針在每輪比較後不斷向目標值靠近,最終獲得結果。di
public class P167 { public int[] twoSum(int[] numbers, int target) { int[] result = new int[2]; if (numbers.length < 2) { return result; } int left = 0; int right = numbers.length - 1; int curSum = 0; while (left < right) { curSum = numbers[left] + numbers[right]; if (curSum < target) { left++; } else if (curSum > target) { right--; } else { result[0] = left + 1; result[1] = right + 1; break; } } return result; } }