1. 程式人生 > >[LeetCode]-001-Two Sum

[LeetCode]-001-Two Sum

題意:

給一組數,給一個目標值.

這組數裡有2個數的和等於目標值,求出這兩個數的下標.

提示:

下標從1開始

明確一定有答案

分析:

一定有答案,從而不用對特殊情況進行考慮.

比如:

(1)一組數的長度小於2.

(2)沒有答案

(3)和值等於2個相同下標的數的和

解法:

想法1:

排序,2個index,1個從前,1個從後,通過和與目標值比較.

但最終求得是下標,所以額外空間存下標與排序同時顯得很麻煩.

想法2:

這組數相對雜湊,把value和key倒置.

因為對值的範圍不明,map就是一個很好的選擇.

C++中的unordered_map是無序map,同時也是最高效的map

利用它,很快得到一個不錯的結果

Java中沒有unordered_map,無序map用HashMap.

程式碼: