C语言求和为S的两个数字

解题思路

由于是升序序列,直接两个指针指向头尾,然后判断指针指向值的和与S比较,如果大于S,右指针左移,小于S左指针右移

 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param array int整型一维数组 
 * @param arrayLen int array数组长度
 * @param sum int整型 
 * @return int整型一维数组
 * @return int* returnSize 返回数组行数
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
int* FindNumbersWithSum(int* array, int arrayLen, int sum, int* returnSize ) {
    int i=0,j=arrayLen-1;
    int *ans=(int *)malloc(sizeof(int)*2);
    while(i<j){
        if(array[i]+array[j]==sum){   
            ans[0]=array[i];
            ans[1]=array[j];
            * returnSize=2;
            return ans;
        }
        else if(array[i]+array[j]>sum)
            j--;
        else if(array[i]+array[j]<sum)
            i++;
            
    }
    * returnSize=0;
    return NULL;
}