原创

计算两数之和

本文字数:

1113

,大约阅读2分钟

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 用来跳出多层嵌套是很方便的),然后通过 堆空间 来把数组的两个下标返回,类似的很多题都是通过堆空间来返回值的。

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

数据结构
算法
LeetCode
面试
数组
哈希表
  • 作者:Netor0x86(联系作者)
  • 发表时间:2019-09-11 21:55
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 公众号转载:请在文末添加作者公众号二维码
  • 评论