兩數之和 N數之和 求教

2022-07-16 12:36:12 字數 2698 閱讀 5688

給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。

你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。

示例:

給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

申請記憶體

固定第乙個下標,查詢是否有滿足條件的第二個下標

找到兩個符合的下標,返回

/**

* note: the returned array must be malloced, assume caller calls free().

*/int

*twosum

(int

* nums,

int numssize,

int target,

int* returnsize)}}

return0;

}

剛開始的時候看到形參中的returnsize,以為不是兩數之和,而是給定的某數之和,所以要實現n個for迴圈,但沒有合理規律的思路,因為一時沒想到n個for迴圈應該怎樣寫出來

然後看了下網上的解法,是直接預設returnsize是2的,因此就不糾結直接用上述方法暴力搜尋,目前還未想到新的方式來解決

不過寫出這個解法後,發現這兩個for迴圈是有規律的,因此實現n數之和貌似也有了思路,需要用到遞迴演算法

int

digui

(int

* nums,

int numssize,

int target,

int* returnsize,

int i,

int sum,

int* values,

int* flag)

}//another time

else

//not last time

else

digui

(nums,numssize,target,returnsize,i++

,sum,values,flag);}

}return0;

}

形參中相比於原來,多了四個引數,i:表面當前處於巢狀第幾層,sum:前幾層巢狀的和,value:存放下標位址,flag:結束標誌。遞迴結束條件是最後第n個數時,總和達到要求,下面是除錯用的**

#include

#include

intdigui

(int

* nums,

int numssize,

int target,

int* returnsize,

int i,

int sum,

int* values,

int* flag)

;int

digui

(int

* nums,

int numssize,

int target,

int* returnsize,

int i,

int sum,

int* values,

int* flag)

}//another time

else

//not last time

else

digui

(nums,numssize,target,returnsize,i++

,sum,values,flag);}

}return0;

}/**

* note: the returned array must be malloced, assume caller calls free().

*/int

*nsum

(int

* nums,

int numssize,

int target,

int* returnsize)

intmain

(void);

static

int target =10;

static

int numssize =7;

static

int returnsize =3;

int* value =

nsum

(nums,numssize,target,

&returnsize)

;printf

("value are %d %d %d\n"

,value[0]

,value[1]

,value[2]

);free

(value)

;return0;

}

不過在編譯執行的時候遇到了錯誤,下面是gdb執行的提示

看提示是指標導致的問題,不過我還沒有什麼解決的方法,也不是很確定錯在了**,大家如果發現了我**錯了的麻煩留個言哈,謝謝啦

兩數之和 三數之和 四數之和

兩數之和意思就是 給你乙個陣列,從中找出兩個數字,讓他們的和等於乙個具體的target。找到所有這樣的兩個數。並且這兩個數字不能完全一樣。n數之和的意思是 給你乙個陣列,從中找出n個數字,讓他們的和等於乙個具體的target。找到所有這樣的n個數。並且這n個數字不能完全一樣。最基礎的,也是最關鍵的就...

兩數之和,三數之和

兩數之和 方法一 暴力 throw new illegalargumentexception 時間複雜度 o n 2 空間複雜度 o 1 public int twosum int nums,int target throw newillegalargumentexception no twosum...

演算法 兩數之和,三數之和,四數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...