
文字思想:
遍歷數(shù)組中所有元素,假設(shè)當(dāng)前遍歷到到的數(shù)是A,下標(biāo)是i,我們構(gòu)建HashMap為(期待的加數(shù) = target - A, A),則A+期待的加數(shù)=target。對每一個遍歷到的數(shù),我們看看它是否存在與HashMap的key中,如果存在,那么這個數(shù)與對應(yīng)的value就是解。
當(dāng)然,要求返回的是下標(biāo),所以構(gòu)建HashMap為(期待的加數(shù) = target - A, i)。
例子:
數(shù)組:2, 11, 15, 7
目標(biāo)和:9
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
當(dāng)前HashMap:
當(dāng)前處理:2,下標(biāo)為:0
2不是HashMap的key,我們計(jì)算它期待的另一個加數(shù)
2期待的另一個加數(shù)是:7
HashMap中新增存儲項(xiàng):key=7, value=0
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
當(dāng)前HashMap:
(7, 0)
當(dāng)前處理:11,下標(biāo)為:1
11不是HashMap的key,我們計(jì)算它期待的另一個加數(shù)
11期待的另一個加數(shù)是:-2
HashMap中新增存儲項(xiàng):key=-2, value=1
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
當(dāng)前HashMap:
(-2, 1)
(7, 0)
當(dāng)前處理:15,下標(biāo)為:2
15不是HashMap的key,我們計(jì)算它期待的另一個加數(shù)
15期待的另一個加數(shù)是:-6
HashMap中新增存儲項(xiàng):key=-6, value=2
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
當(dāng)前HashMap:
(-2, 1)
(-6, 2)
(7, 0)
當(dāng)前處理:7,下標(biāo)為:3
7是HashMap的key,那么key=7 + nums[value]= = nums[0]=2 = target = 9
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
對應(yīng)下標(biāo):3,0
代碼:

時間復(fù)雜度:
? 遍歷nums,O(n),空間復(fù)雜度:HashMap,O(n)。
積累:
- HashMap機(jī)制:key-value,這屬于Java知識。
- 本題完整思想。
推薦閱讀:LeetCode刷題集合