查找数组中两个数字的目标和

时间:2019-01-29 20:30:08

标签: c arrays algorithm loops

我遇到无法解决的错误:

  

在main中->分配具有数组类型的表达式

     

在函数'twoSum'中:
   错误:请求成员'length'的形式不是结构或联合体
       for(int i = 0; i      

错误:“]”标记之前的预期表达式                    return arrayR [] {i,j};

     

在函数“ main”中:
  TwoSum.c:27:13:错误:分配给具有数组类型的表达式
       结果= twoSum(array,5,3);

{{1}}

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

下面的代码将起作用并产生预期的结果。

正如其他评论所述,您应该学习C / C ++中的指针和内存管理的概念。在其他语言(Java,C#和其他语言)中找不到类似的东西,因此对您来说这将是一个新概念。

void twoSum(int *nums, int size,  int numsSize, int target, int * res)
{
    for (int i = 0; i < size; i++)
    {
        for (int j = i + 1; j < size; j++)
        {
            if (nums[j] == target - nums[i])
            {
                res[0] = i;
                res[1] = j;
                return;
            }
        }
    }
}

int main()
{
    int array[5] = { 1, 2, 3, 4, 5 };
    int results[2];
    twoSum(array, sizeof(array)/sizeof(array[0]), 5, 3, results);

    return 0;
}