运行时错误:有符号整数溢出:-1094795586 + -1094795586无法用'int'类型表示

时间:2019-08-26 20:56:46

标签: c pointers

  

二和问题。

     

给出一个整数数组,返回两个数字的索引,以便它们加起来成为一个特定的目标。

     

您可以假设每个输入都只有一个解决方案,并且您可能不会两次使用相同的元素。

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */

这是有关Leetcode的初学者问题。测试用例是数组[2,7,11,15]。看来我的代码实际上并没有访问数组中的元素。给出了变量numstargetnumsSizereturnSize。我假设numsSize是数组的大小。设置nums时,在p= nums旁边添加'&'时,我只是遇到了堆栈缓冲区溢出错误。

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */


int* twoSum(int* nums, int numsSize, int target, int* returnSize){

    scanf("%d", &numsSize);
    nums = (int*)malloc(numsSize * sizeof(int)); 
    int array[1];
    int* p;
    int* j;

    p = nums;
    int i = 0;

    j = p + 1;

    for(i = 0; i < numsSize; i++){

        if(*p + *j == target){

            array[0] = &p;
            array[1] = &j;

        }

        p++;
        j++;

    }


    return array;

    free(nums);
}

Leetcode的预期结果。

给出数字= [2,7,11,15],目标= 9,

因为nums [0] + nums [1] = 2 + 7 = 9, 返回[0,1]。

1 个答案:

答案 0 :(得分:0)

<ul class="name_of_class" id="TEST"> <li class="foo">1</li> <li class="boo">2</li> <li class="goo">3</li> <ul>是不可能的,因为您在代码的第3行中声明了array[1] = &j;而不是int array[1],请尝试int array[2]。那应该部分解决错误。处理数组,因为这是数组的基本概念。