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 ...