题目来源
LeetCode:https://leetcode-cn.com/problems/two-sum
我的程序
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int* ret = NULL;
*returnSize = 0;
int temp = 0;
for(int i = 0; i < numsSize; ++i)
{
for(int j = i + 1; j < numsSize; ++j)
{
if(nums[i] + nums[j] == target)
{
*returnSize += 2;
ret = realloc(ret, sizeof(int) * (*returnSize));
ret[temp++] = i;
ret[temp++] = j;
}
}
}
return ret;
}
结果
官方答案
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
for (int i = 0; i < numsSize; ++i) {
for (int j = i + 1; j < numsSize; ++j) {
if (nums[i] + nums[j] == target) {
int* ret = malloc(sizeof(int) * 2);
ret[0] = i, ret[1] = j;
*returnSize = 2;
return ret;
}
}
}
*returnSize = 0;
return NULL;
}
结果
分析
我的程序是整个完全遍历完了找出所有解,而官方是找到后直接跳出。相对于这道题来说官方的答案很显然更加贴近题意,但是我的程序更加具有普遍性(因为适合满足多组解的情况)。
|