力扣1 兩數之和

2021-10-03 03:03:47 字數 1121 閱讀 9950

給定乙個整數陣列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)}}

returnsize=0;

return x;

}

思路分析

因為假設每種輸入只會對應乙個答案,所以首先把陣列中的第乙個固定下來設為a,將a的下乙個數設定為b,因為a+b=b+a,故b只要從下乙個一直到結尾就可以了。

注意事項

int

*x=(

int*

)malloc

(sizeof

(int)*

2);

int* twosum(int* nums, int numssize, int target, int* returnsize){,

其中returnsize是為了讓你指定存放結果的陣列的長度,雖然題目沒有告之這一點,但要記得加一句:

*returnsize =

2;

不然會報溢位的錯誤。

大神解法

通過迭代將元素新增到雜湊表中,同時我們比較該元素的對應元素是否已經存在與雜湊表中,如果存在,我們直接返回答案。

力扣1 兩數之和

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

力扣 1 兩數之和

方法一 暴力遍歷 時間複雜度o n 2 執行超時 for i in range len nums for j in range i 1,len nums res nums i nums j if res target return i,j 方法二 時間複雜度o n for i in range le...

力扣 1 兩數之和

在該題中 很容易想到用暴力法來解決 直接進行n 2次尋找 此時 時間複雜度很高 而要降低時間複雜度 即減少查詢次數 可以用hashmap 儲存num i i 降低了尋找可能存在的對應數字的次數 mapmap new hashmap for int i 0 i nums.length i for in...