直接在 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 用来跳出多层嵌套是很方便的),然后通过 堆空间 来把数组的两个下标返回,类似的很多题都是通过堆空间来返回值的。
把自己的答案分享在这里,献丑了,也许哪个大牛指点一下还会提高一下。
评论