题解 | #两数之和#

两数之和

https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f

先找第一个加数,因为第二个加数可能会是负数,且题中说了最小为-10,所以判断如果某个数减10之后还大于sum,那么必不可能是第一个加数,看下一个。
找到第一个加数之后,便从其后面开始找第二个,一轮遍历没找到,就把第一个加数换成下一个再重新找。
int* twoSum(int* numbers, int numbersLen, int target, int* returnSize ) {
   int* ret = (int*)malloc(sizeof(int)*2);  //为数组申请2个整型大小的空间
     if(numbersLen == 0)   return NULL;
    *returnSize=2;  //控制返回数组中元素的个数为2
    int i,j;
    for(i=0;i <numbersLen - 1; i++){
        if(numbers[i] - 10 > target)//可能会在后面被减掉10
            continue;//跳过本次for,检查下一个元素
        for(j = i+1; j<numbersLen; j++)
        {   //从某个小于目标值的数的后一个数开始比较
            if(numbers[i] + numbers[j] == target){
                ret[0]=i+1;  //所求第一个加数的下标值
                ret[1]=j+1;  //所求第二个加数的下标值
                return ret;   //返回数组首地址
            }
        }
    }
    return ret;  
}


全部评论

相关推荐

虽然大家都在劝退读研,说读研以后也是打工,不如本科直接去打工,但随着现在研究生越来越多,很多企业招聘要求就会变成研究生起招,本科投递简历就会被卡,横向比较时也会因为"本科学历比不上研究生学历"被筛掉,而且你没发现劝退读研的基本都是读完研的人吗?而且进体制、国企等,研究生也比本科生升的快,他们拿着研究生文凭劝你一个本科生,可别当真了
球1个offer:每个行业都是不一定的,例如计算机开发岗,只要是92学历,完全可以冲互联网大厂,没进去抛开运气因素,就是不够努力,准备的晚没有实习等等。计算机算法岗还是要读研的,研究生是基本要求。现在太多人无脑考研了,因为本科秋招春招啥都没准备过,只能读研
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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