兩數之和1

2021-10-07 15:08:49 字數 853 閱讀 1423

方法一:暴力法

暴力法很簡單,遍歷每個元素 xx,並查詢是否存在乙個值與 target - xtarget−x 相等的目標元素。

class

solution;}

}}throw

newillegalargumentexception

("no two sum solution");

}}

複雜度分析:

時間複雜度:o(n^2)

對於每個元素,我們試圖通過遍歷陣列的其餘部分來尋找它所對應的目標元素,這將耗費 o(n) 的時間。因此時間複雜度為 o(n^2)。

空間複雜度:o(1)。

方法二:一遍雜湊表

事實證明,我們可以一次完成。在進行迭代並將元素插入到表中的同時,我們還會回過頭來檢查表中是否已經存在當前元素所對應的目標元素。如果它存在,那我們已經找到了對應解,並立即將其返回。

class

solution;}

map.

put(nums[i]

, i);}

throw

newillegalargumentexception

("no two sum solution");

}}

複雜度分析:

時間複雜度:o

(n),我們只遍歷了包含有 n 個元素的列表一次。在表中進行的每次查詢只花費 o(1

) 的時間。

空間複雜度:o

(n),所需的額外空間取決於雜湊表中儲存的元素數量,該錶最多需要儲存 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 但是通過檢視官方的...