leetcode刷題 兩數之和

2022-07-11 13:30:11 字數 1966 閱讀 6824

題目:

給定乙個整數陣列 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])

1

deftwo_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 解釋...