leetcode 1 兩數之和

2021-08-20 07:39:41 字數 851 閱讀 8321

1. 兩數之和

這道題和程式設計之法上面的題目有以下幾個不同:

1、題目所給定的陣列是無序的,程式設計之法裡面是預設有序的 

2、要求輸出原陣列的序號,如果用乙個結構體維護陣列下標,那麼需要o(n)的空間,顯然不是最好的方法 

3、題目中包含負數,之前想用數值直接表示陣列下標,陣列值為原來的真正陣列下標,但是由於是負數,所以這個方法也失效了

4、有重複數值,同樣是之前的用陣列來儲存原陣列下標的方法,在出現了重複數值後,就會發生衝突

所以這道題最好的解決方法就是使用乙個map,因為陣列有越界的危險,而map中的key關鍵值沒有,可以很好解決負數的問題,而且關鍵字要求是唯一的,所以也順便解決了重複數值的問題

相同的數值所對應的關鍵字key是不同的 ,因此重複數值就可以通過關鍵字來區別。注意:題中的key直接用for迴圈中的i來表示,i是不斷自增的,所以不會重複。 

/*

為了提高時間的複雜度,需要用空間來換,要用線性的時間複雜度來解決問題,就是說只能遍歷乙個數字,那麼另乙個數字,可以事先將其儲存起來,

使用乙個map,來建立數字和其座標位置之間的對映,map是常數級的查詢效率,這樣,我們在遍歷陣列的時候,用target減去遍歷到的數字,就是另乙個需要的數字了

直接在hashmap中查詢其是否存在,注意要判斷查詢到的數字不是第乙個數字

*/class solution

for (int i = 0; i < nums.size(); ++i)

}return res;}};

LeetCode 1 兩數之和

給定乙個整數數列,找出其中和為特定值的那兩個數。你可以假設每個輸入都只會有一種答案,同樣的元素不能被重用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 step 1 class solution object def tw...

leetcode 1 兩數之和

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

leetcode1 兩數之和

public int twosum int nums,int target return result else private static boolean checknum int nums,int target,listlist,int size,boolean issum if issum ...