LeetCode-1.Two Sum
問(wèn)題描述:給你一個(gè)整形數(shù)組,然后給你一個(gè)特定的和,取出數(shù)組中相加等于特定和的兩個(gè)數(shù)值對(duì)應(yīng)的下標(biāo),組成的數(shù)組。(這個(gè)題目其實(shí)有一點(diǎn)問(wèn)題,就是如果數(shù)組中有兩對(duì)數(shù)字相加等于目標(biāo)和,那么輸出可能就有問(wèn)題了,所以特定的場(chǎng)合是至多只有一組)
例如:[2, 7, 11, 15] 目標(biāo)和是9,所以方法應(yīng)該返回????[0, 1]
解法1:
? ? 這可能是大部分人第一時(shí)間想到的方法,就是兩個(gè)for循環(huán)遍歷,判斷相加是否符合,然后輸出,代碼如下:

解法2:
? ? 用Hash Table來(lái)解決,這個(gè)方法在時(shí)間復(fù)雜度上面要比上面的方法來(lái)的好,特別是在數(shù)據(jù)量很大的情況下,代碼如下:

接下來(lái),我們來(lái)看一下測(cè)試,簡(jiǎn)單的數(shù)組我們就不測(cè)試了,兩個(gè)解法使用的時(shí)間大致一樣。我們創(chuàng)建一個(gè)含有0到99999的數(shù)組,然后目標(biāo)和為199997。兩個(gè)測(cè)試的時(shí)間如下:
解法1使用的時(shí)間,大約使用了12秒左右,我跑過(guò)幾次,時(shí)間大約都在12秒左右。

解法2使用的時(shí)間,大約在7ms左右,我也試過(guò)幾次,最長(zhǎng)的時(shí)間也就14ms。

從數(shù)據(jù)上面可以看出,大數(shù)據(jù)量的時(shí)候,HashMap使用的時(shí)間要大大的小于解法1。