編號1 兩數之和

2022-06-25 02:24:08 字數 869 閱讀 7574

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

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

「示例:」

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

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

所以返回 [0, 1]

很明顯暴力的解法是兩層for迴圈查詢,時間複雜度是o(n^2)。

使用雜湊法最為合適,之前已經介紹過,陣列和set在雜湊法中的應用,那麼來看一下使用陣列和set來做雜湊法的侷限。

此時就要選擇另一種資料結構:map ,map是一種key value的儲存結構,可以用key儲存數值,用value在儲存數值所在的下表。

「這道題目中並不需要key有序,選擇std::unordered_map 效率更高!」

public class 第一題兩數相加 ;

int ints = hashtwosum1(num, 9);

system.out.println(arrays.tostring(ints));

}//暴力解法

public static int violencetwosum(int num, int target) }}

return null;

}//雜湊解法

public static int hashtwosum(int num, int target) ;

}map.put(num[i], i);

}return null;

}}

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