LeetCode 1. Two Sum解析


タイトル
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].                        

元の意味:整数配列を指定し、2つの数値のインデックスを返し、それらを加えて特定のターゲットにします.
入力ごとに1つのソリューションしかないと考えられ、同じ要素を2回も使用しない場合があります.
問題を解く構想.
第1回は配列全体を遍歴し、mapで数値とその座標を記録し、第2回は配列を遍歴し、(目標数字-現在の数字)がmapにあるかどうかを判断し、その下付き記号が現在の数字の下付き記号と異なる場合、この2つの数が存在することを説明し、座標を返す.
class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        hash_map = {}
        for index, value in enumerate(nums):
            hash_map[value] = index
        for index1, value in enumerate(nums):
            if target - value in hash_map:
                index2 = hash_map[target - value]
                if index1 != index2:
                    return [index1 + 1, index2 + 1]
この問題の問題コードはhttps://shenjie1993.gitbooks.io/leetcode-python/content/001%20Two%20Sum.html
最初は配列を使うと思っていましたが、アップロードで発見し、タイムアウトしました.その後このコードを見てenumerate()関数を学びました
Python enumerate()関数
説明
Enumerate()関数は、リスト、メタグループ、文字列などの遍歴可能なデータオブジェクトをインデックスシーケンスに結合し、forループで一般的に使用されるデータとデータの下付き文字をリストするために使用されます.
Python 2.3. 以上のバージョンで使用できます.2.6 startパラメータを追加します.
構文
次はenumerate()メソッドの構文です.
enumerate(sequence, [start=0])

パラメータ
sequence--シーケンス、反復器、または反復をサポートする他のオブジェクト.
start--下付き開始位置.
戻り値
enumerate(列挙)オブジェクトを返します.
≪インスタンス|Instance|emdw≫
enumerate()メソッドを使用する例を次に示します.
>>>
seasons
=
[
'
Spring
'
,
'
Summer
'
,
'
Fall
'
,
'
Winter
'
]
>>>
list
(
enumerate
(
seasons
)
)
[
(
0
,
'
Spring
'
)
,
(
1
,
'
Summer
'
)
,
(
2
,
'
Fall
'
)
,
(
3
,
'
Winter
'
)
]
>>>
list
(
enumerate
(
seasons
,
start
=
1
)
)
#小標は1から
[
(
1
,
'
Spring
'
)
,
(
2
,
'
Summer
'
)
,
(
3
,
'
Fall
'
)
,
(
4
,
'
Winter
'
)
]
普通のforサイクル
>>>
i
=
0
>>>
seq
=
[
'
one
'
,
'
two
'
,
'
three
'
]
>>>
for
element
in
seq
:...
print
i
,
seq
[
i
]
...
i
+=
1
...
0
one
1
two
2
three
forループenumerateの使用
>>>
seq
=
[
'
one
'
,
'
two
'
,
'
three
'
]
>>>
for
i
,
element
in
enumerate
(
seq
)
:...
print
i
,
seq
[
i
]
...
0
one
1
two
2
three
>>>