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:
元の意味:整数配列を指定し、2つの数値のインデックスを返し、それらを加えて特定のターゲットにします.
入力ごとに1つのソリューションしかないと考えられ、同じ要素を2回も使用しない場合があります.
問題を解く構想.
第1回は配列全体を遍歴し、mapで数値とその座標を記録し、第2回は配列を遍歴し、(目標数字-現在の数字)がmapにあるかどうかを判断し、その下付き記号が現在の数字の下付き記号と異なる場合、この2つの数が存在することを説明し、座標を返す.
最初は配列を使うと思っていましたが、アップロードで発見し、タイムアウトしました.その後このコードを見てenumerate()関数を学びました
Python enumerate()関数
説明
Enumerate()関数は、リスト、メタグループ、文字列などの遍歴可能なデータオブジェクトをインデックスシーケンスに結合し、forループで一般的に使用されるデータとデータの下付き文字をリストするために使用されます.
Python 2.3. 以上のバージョンで使用できます.2.6 startパラメータを追加します.
構文
次はenumerate()メソッドの構文です.
パラメータ
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
>>>
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
:...
i
,
seq
[
i
]
...
i
+=
1
...
0
one
1
two
2
three
forループenumerateの使用
>>>
seq
=
[
'
one
'
,
'
two
'
,
'
three
'
]
>>>
for
i
,
element
in
enumerate
(
seq
)
:...
i
,
seq
[
i
]
...
0
one
1
two
2
three
>>>