1 兩數之和

2021-10-11 07:50:48 字數 1199 閱讀 9159

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

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

示例:

將所有數字的和都算一遍,找出其中與目標值相等的返回結果。

//利用雙重迴圈兩次遍歷陣列,找出所有陣列成員彼此之和

for(

int i =

0; i < nums.length; i++);

}}}return null;

兩數之和官方題解

就是我使用的方法,不再敘述。

思路及演算法

注意到方法一的時間複雜度較高的原因是尋找 target - x 的時間複雜度過高。因此,我們需要一種更優秀的方法,能夠快速尋找陣列中是否存在目標元素。如果存在,我們需要找出它的索引。

使用雜湊表,可以將尋找 target - x 的時間複雜度降低到從 o(n)o(n) 降低到 o(1)o(1)。

這樣我們建立乙個雜湊表,對於每乙個 x,我們首先查詢雜湊表中是否存在 target - x,然後將 x 插入到雜湊表中,即可保證不會讓 x 和自己匹配。

**

class

solution;}

hashtable.

put(nums[i]

, i);}

return

newint[0

];}}

複雜度分析

利用雜湊表o(1) 時間進行資料的插入刪除和查詢的特性,

講已經遍歷過的陣列成員存入雜湊表中,

查詢現在陣列成員與以往成員的和是否等於target

用list陣列代替雜湊表更容易理解

public

static

int[

]twosum

(int

nums,

int target);}

} lastnums.

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