计算两数之和

时间:2022-07-23
本文章向大家介绍计算两数之和,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

LeetCode 题库的第一题——两数之和

直接在 LC 上写代码,不去开发环境中写代码调试,感觉跟在纸上写差不多,挺不习惯。题目如下图,直接从网站上把图截取过来的。

解题答案

  我的解题答案是用 C 语言完成的,代码如下:

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* nums, int numsSize, int target) {
    int i, j;
    int *pArr = NULL;
    
    for ( i = 0; i < numsSize; i ++ ) {
        for ( j = i + 1; j < numsSize; j ++  ) {
            if ( nums[i] + nums[j] == target ) {
                goto EXIT;
            }
        }
    }
EXIT:
    
    if ( i < numsSize && j < numsSize ) {
        pArr = (int*)malloc(2 * sizeof(int));
        pArr[0] = i;
        pArr[1] = j;
    } 
    
    return pArr;
}

  函数的原型是LeetCode已经定义好的,最上面的注释也是LeetCode中的,代码的思路也比较简单,两层循环来进行逐个的进行 加法 运算,计算获得 target 值之后用 goto 直接跳出两层循环( C 语言不建议使用 goto 语句,但是并没有说不允许使用,直接结构清楚,goto 用来跳出多层嵌套是很方便的),然后通过 堆空间 来把数组的两个下标返回,类似的很多题都是通过堆空间来返回值的。

  把自己的答案分享在这里,献丑了,也许哪个大牛指点一下还会提高一下。

由于本人水平有限,难免有误,中肯取代无理,客观代替谩骂,希望可以互相学习,共同提高!