問題
給定一個整數的陣列nums
,其中有兩個數的和會等於目標target
,回傳他們的位置,且同個位置不能重複選取。
輸入
nums = [2, 7, 11, 15]
target = 9
輸出
[0, 1]
方法
- Brute Force
- Hash Table
第一種方法就是直接使用暴力法,把陣列裡面的元素都加加看,但是時間複雜度會到O(n2)。
1 | class Solution(object): |
居然吃了一發TLE,沒想到第一題就玩真的,只好另尋他法了。
這時想到python
中相當好用的dictionary
,第二種方法就是利用雜湊表將讀到的 index 及 value 紀錄下來,即可在讀入一個新的數之後查看這個數的 complement 是否在 table 當中,這樣就可以完美找到一組解啦。
因為使用了dictionary
,所以查表的時間只要O(1),最後時間複雜度降到了O(n),當然也就順利通過了!
1 | class Solution(object): |