1 兩數之和

2021-10-08 12:56:01 字數 1258 閱讀 5463

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

你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。

示例:

給定 nums =[2

,7,11

,15], target =

9因為 nums[0]

+ nums[1]

=2+7

=9所以返回 [0,

1]

最簡單的方法就是暴力破解,時間複雜度為o(n2).

class

solution

hashmap[nums[i]

]=i+1;

//將hash表對應下標+1,防止處理下標為0的情況

1)

優點: 因為內部實現了雜湊表,因此其查詢速度非常的快

缺點: 雜湊表的建立比較耗費時間

適用處:對於查詢問題,unordered_map會更加高效一些,因此遇到查詢問題,常會考慮一下用unordered_map

class

solution

for(

int k=

0; k++k)

else

if(j==temp[j])if

(i==n&&j==n)

break;}

return ans;}}

;

來自leetcode官方解法

當我們需要列舉陣列中的兩個元素時,如果我們發現隨著第乙個元素的遞增,第二個元素是遞減的,那麼就可以使用雙指標的方法,將列舉的時間複雜度從 o(n2)減少至 o(n)。為什麼是 o(n) 呢?這是因為在列舉的過程每一步中,「左指標」會向右移動乙個位置(也就是題目中的 bbb),而「右指標」會向左移動若干個位置,這個與陣列的元素有關,但我們知道它一共會移動的位置數為 o(n),均攤下來,每次也向左移動乙個位置,因此時間複雜度為 o(n)。

1 兩數之和

給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 解class solution hash nums i...

1 兩數之和

給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 由於元素不能重複利用,所以使用j i 1,通過雙迴圈,...

1 兩數之和

你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。public int twosum int nums,int target throw new illegalargumentexception no two sum solution 這樣的時間複雜度為0 nlogn 但是通過檢視官方的...