每日LeetCode - 167. 两数之和 II - 输入有序数组(C语言)


C语言

双指针,且numbers是有序数列。

int* twoSum(int* numbers, int numbersSize, int target, int* returnSize){
    int x,y,left=0,right=numbersSize-1,sum;
    int* res = (int*)malloc(sizeof(int)*2);
    
    while(left<right){
        sum=numbers[left]+numbers[right];
        if(sum==target){
            res[0]=left+1;
            res[1]=right+1;
            *returnSize=2;
            return res;
        }
        else if (sum<target){
            ++left;
        }
        else{
            --right;
        }
    }
    *returnSize=0;
    return res;
}