Two sum-LeetCode(C语言实现)
今天用C写了LeetCode第一个题目,题目如下:
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
算法一句话概括就是从数组里面取2个数若和为9则返回下标。我用C写出来后却报错了。我把代码放在VC6.0上运行却是成功的,代码如下:
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* twoSum(int* nums, int numsSize, int target) {
int *indice = (int*)malloc(2*sizeof(int));
for(int i=0;i<=numsSize-1;i++){
for(int j=0;j<=numsSize-1;j++){
if((nums[i]+nums[j]==target)&(i!=j)){
indice[1]=i;
indice[0]=j;
}
}
}
return indice;
}
void main(void){
int nums[4]={2,7,11,15},target=9,numsSize=4;
int* p=twoSum(nums,numsSize,target);
printf("[%d,%d]\n",p[0],p[1]);
}
代码运行结果如下:
我提交后却是:
后来发现与系统自带main冲突,思考了2下,突然灵光一现,去掉main函数提交不就行了:
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* twoSum(int* nums, int numsSize, int target) {
int *indice = (int*)malloc(2*sizeof(int));
for(int i=0;i<=numsSize-1;i++){
for(int j=0;j<=numsSize-1;j++){
if((nums[i]+nums[j]==target)&(i!=j)){
indice[1]=i;
indice[0]=j;
}
}
}
return indice;
}
结果果不其然:
原来只需要写他定义好的函数就写了,打扰了。。。。。。。。。。。。
还没有评论,来说两句吧...