LeetCode167兩數之和 II - 輸入有序陣列-C語言
阿新 • • 發佈:2018-11-28
給定一個已按照升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。
函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。
說明:
- 返回的下標值(index1 和 index2)不是從零開始的。
- 你可以假設每個輸入只對應唯一的答案,而且你不可以重複使用相同的元素。
示例:
輸入: numbers = [2, 7, 11, 15], target = 9 輸出: [1,2] 解釋: 2 與 7 之和等於目標數 9 。因此 index1 = 1, index2 = 2 。
/** * Return an array of size *returnSize. * Note: The returned array must be malloced, assume caller calls free(). */ int* twoSum(int* numbers, int numbersSize, int target, int* returnSize) { int left = 0; int right = numbersSize - 1; int *array = (int *)malloc(2*sizeof(int)); *returnSize = 2; while(left <= right){ if(numbers[left] + numbers[right] == target){ break; } else if(numbers[left] + numbers[right] < target){ left += 1; } else right -= 1; } array[0] = left + 1; array[1] = right + 1; return array; }