一、题目
二、解题思路
(1)方法一
双重循环,第一层循环从第一个值开始遍历,和第二层循环的第二个值开始进行遍历相加是否为目标值,如果是,记录两个值的索引号,如果没有返回空值。
三、虚机测试代码
#include <stdio.h>
#include <stdlib.h>
void main()
{
int* twoSum(int* nums, int numsSize, int target, int* returnSize);
void PrintfArray(int *array ,int size);
int *arr;
//int testarr[] = {2,7,11,15};
//int target = 9;
int testarr[] = {3,2,4};
int target = 6;
int size = sizeof(testarr) / sizeof(int);
int i;
int returnSize;
arr = twoSum(testarr , size, target, &returnSize);
PrintfArray(testarr, size);
PrintfArray(arr, returnSize);
}
int* twoSum(int* nums, int numsSize, int target, int* returnSize)
{
int i,j,tmp;
for(i=0; i<numsSize-1; i++)
{
tmp = target - nums[i];
for(j=i+1; j<numsSize; j++)
{
if(tmp == nums[j])
{
int *arr = malloc(2 * sizeof(int));
arr[0] = i;
arr[1] = j;
*returnSize = 2;
return arr;
}
}
}
*returnSize = 0;
return NULL;
}
void PrintfArray(int *array ,int size)
{
int i;
for(i=0;i<size;i++)
{
printf("%4d",array[i]);
}
printf("\n");
}
四、虚机测试截图
五、leecode提交代码
int* twoSum(int* nums, int numsSize, int target, int* returnSize)
{
int i,j,tmp;
for(i=0; i<numsSize-1; i++)
{
tmp = target - nums[i];
for(j=i+1; j<numsSize; j++)
{
if(tmp == nums[j])
{
int *arr = malloc(2 * sizeof(int));
arr[0] = i;
arr[1] = j;
*returnSize = 2;
return arr;
}
}
}
*returnSize = 0;
return NULL;
}
六、leecode提交截图