1 兩數之和

2021-09-11 11:49:40 字數 829 閱讀 7978

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

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

示例:

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

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

所以返回 [0, 1]

一開始想的是o(n²)的演算法,兩個for迴圈,我們只想用線性的時間複雜度來解決問題,那麼就是說只能遍歷乙個數字,那麼另乙個數字呢,我們可以事先將其儲存起來,使用乙個hashmap,來建立數字和其座標位置之間的對映,我們都知道hashmap是常數級的查詢效率,這樣,我們在遍歷陣列的時候,用target減去遍歷到的數字,就是另乙個需要的數字了,直接在hashmap中查詢其是否存在即可,注意要判斷查詢到的數字不是第乙個數字,比如target是4,遍歷到了乙個2,那麼另外乙個2不能是之前那個2。

在求陣列中的位置(下標)的時候,有些題目一般還要涉及到排序,所以經常用hash_table來儲存數對應原始陣列的位置。

整個實現步驟為:先遍歷一遍陣列,建立hashmap對映,然後再遍歷一遍,開始查詢,找到則記錄index。**如下:

class solution 

for(int i =0;i}

return res;

}};

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 但是通過檢視官方的...