題目:給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。
開始思路:
只是做出來,但是沒有考慮只對應乙個答案,兩個for迴圈不容易解決重複問題,
1 a = [2,4,6,3]2 b = 9
3def
twosum(nums, target):
4 lens =len(nums)
5for i in
range(lens):
6for j in range(i+1,lens):
7if nums[i]+nums[j] ==target:
8print
(i, j)
9break
10break
這樣在列表的第乙個第二個值重複時候會出錯
1 a = [2,4,6,3]2 b = 9
3def
twosum(nums, target):
4 lens =len(nums)
5for i in range(1, len(nums)):
6 temp =nums[:i]
7if (target - nums[i]) in
temp:
8 j = temp.index(target -nums[i])
9print
(j, i)
1011
12 twosum(a, b)
range 的範圍是從0到i-1
列表的下標範圍是從0開始對應元素
a[:1]表示a[0],列表的第乙個元素
enumerate() 函式用於將乙個可遍歷的資料物件(如列表、元組或字串)組合為乙個索引序列,同時列出資料和資料下標,一般用在 for 迴圈當中
enumerate(sequence,[start=0])
1deftwo_sum(nums, target):
2"""
這樣寫更直觀,遍歷列表同時查字典
"""3 dct ={}
4for i, n in
enumerate(nums):5#
nums自動識別為字典,nums中下標為鍵,值為列表對應值
6 cp = target -n7#
尋找和減去第乙個的數的差值
8if cp in
dct:
9print
([dct[cp], i])
10else
:11 dct[n] =i12#
返回的一種寫法
1314
15 two_sum(a, b)
1用字典模擬雜湊求解
2字典記錄num1和num2的值和位置
3 enumerate() 函式用於將乙個可遍歷的資料物件(如列表、元組或字串)組合為乙個索引序列,同時列出資料和資料下標,一般用在 for
迴圈當中。
4def
twosum(nums, target):
5 hashmap={}6#
儲存的內容是鍵值對(key-value)對映
7for ind,num in
enumerate(nums):
8 hashmap[num] =ind
9for i,num in
enumerate(nums):
10 j = hashmap.get(target -num)
11if j is
not none and i!=j:
12return [i,j]
leetCode刷題 兩數之和
兩數之和 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums...
leetCode刷題 兩數之和
兩數之和 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums...
LeetCode刷題 兩數之和
給定乙個整數陣列nums和乙個整數目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回它們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。你可以按任意順序返回答案。示例 1 輸入 nums 2,7,11,15 target 9 輸出 0,1 解釋...