题解 | #和为S的两个数字#

和为S的两个数字

http://www.nowcoder.com/practice/390da4f7a00f44bea7c2f3d19491311b

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;
}
全部评论

相关推荐

lllllkin:感觉可以精简到一页简历,有些排版感觉不是必须的。 时间线越早的,你自己越熟悉的放前面。描述可以更精简些,一些问题解决感觉可以不用写具体技术栈,卖个关子,等面试官问。
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务