題目:
給定一個整數陣列 nums 和一個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,并回傳他們的陣列下標。
你可以假設每種輸入只會對應一個答案。但是,陣列中同一個元素不能使用兩遍。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以回傳 [0, 1]
代碼如下:
int* twoSum(int* nums, int numsSize, int target, int* returnSize){ //這個returnSize指標變數是干什么用的?難道不是可有可無嗎?
int* res = (int *)malloc(sizeof(int) * 2);
* returnSize=0;
for(int i = 0; i < numsSize-1; i++) {
for(int j = i + 1; j < numsSize; j++) {
if(nums[i] + nums [j] == target) {
res[0] = i;
res[1] = j;
*returnSize = 2;
return res;
}
}
}
return res; //上面已經有回傳res了,那這里回傳res的理由是什么?
}
uj5u.com熱心網友回復:
上面已經回傳res是因為==target了。如果沒有等于target就不回傳了嗎?可以把后面的return作為例外情況。另外,returnSize的值也可以作為是否找到了==target的兩個判斷依據。
為什么這么寫要看寫的人的思路了。
uj5u.com熱心網友回復:
可是returnSize除了被賦值也沒有其他操作了啊,uj5u.com熱心網友回復:
對,那也只是在==target的時候被賦值了。這樣可以通過returnSize來確定是否找到==target的。
對于return res;的回傳值不能直接使用,因為res在沒有找到==target的時候,里面存的是隨機值。
uj5u.com熱心網友回復:
回傳的是指標,指向一個一維陣列,則需要指明陣列的大小。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/30950.html
標籤:C語言
上一篇:python銀行票據問題
