二和问题。
给出一个整数数组,返回两个数字的索引,以便它们加起来成为一个特定的目标。
您可以假设每个输入都只有一个解决方案,并且您可能不会两次使用相同的元素。
/** * Note: The returned array must be malloced, assume caller calls free(). */
这是有关Leetcode的初学者问题。测试用例是数组[2,7,11,15]
。看来我的代码实际上并没有访问数组中的元素。给出了变量nums
,target
,numsSize
和returnSize
。我假设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]。
答案 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]
。那应该部分解决错误。处理数组,因为这是数组的基本概念。