題目描述:
給定一個整數陣列 nums 和一個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,并回傳他們的陣列下標。
你可以假設每種輸入只會對應一個答案。但是,陣列中同一個元素不能使用兩遍。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以回傳 [0, 1]
鏈接:https://leetcode-cn.com/problems/two-sum
我的解答:
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* twoSum(int* nums, int numsSize, int target, int* returnSize)
{
//分配lst陣列的記憶體 使用malloc函式malloc(sizeof(int) *2)
int *lst = (int)malloc(sizeof(int) *2);
//倆個回圈進行遍歷
for (int i = 0; i< numsSize-1; i++)//j最終應該為3,j最終才可以是4,否則陣列越界
{
for (int j = i+1 ; j< numsSize ; j++)
{
//判斷i j對應下標的陣列相加和是否等于target
if(nums[i] + nums[j]== target)
{
//把找到的陣列下標存入陣列returnSize中
lst[0]= i;
lst[1]= j;
*returnSize = 2;
return lst;
//return returnSize;//不知道如何回傳陣列{i,j}
}
// else
// {
// //為了防止報錯,這里需要添加else分支陳述句
// }
}
}
return lst;
}
報錯資訊:

需求:
自己用visual studio2010除錯過,可能自己的語法還是沒有掌握好,邏輯應該沒有問題。希望分析下。
uj5u.com熱心網友回復:
int *lst = (int)malloc(sizeof(int) *2); 改為int *lst = (int*)malloc(sizeof(int) *2); 試試你這是把地址轉為整數,又把整數轉為地址
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/59085.html
標籤:C語言
