#include<stdio.h>
#include<stdlib.h>
int* twoSum(int* nums, int numsSize, int target)// 3个形参为给出的数组,数组中的元素个数,目标和
{
int i,j,temp; //temp用来储存2个数字之和,用以与target比较
static int *arr; //将数组用指针表示,且定义为全局静态变量,确保返回指针时指针指向的地址中的数据不被销毁,这一点十分重要
arr=(int *)malloc(2*sizeof(int)); //应题目要求用mallloc函数为指针指向的地址分配内存
for(i=0;i<numsSize;i++) //利用嵌套循环控制2个不同数字的相加
for(j=0;j<numsSize;j++)
{
if(i!=j)
{
temp=nums[i]+nums[j];
if(temp==target)
{
arr[0]=j;
arr[1]=i;
break; //一旦获得结果,跳出循环,题目指出只有一个解
}
}
else continue; //如果i=j,即2个相同的数字相见,则跳过这一步,继续循环
}
return arr; //最后返回指针
}
1.twosum
最新推荐文章于 2022-11-09 11:23:01 发布