python Leetcode第一題 兩數之和

2021-08-27 04:14:37 字數 1330 閱讀 5387

給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

首先,確定給定陣列中的乙個數,再用目標數值與其做差,之後在陣列中查詢是否有與其匹配的剩餘項即可。

class

solution

(object):

deftwosum

(self, nums, target):

""" :type nums: list[int]

:type target: int

:rtype: list[int]

"""for i,k in enumerate(nums):

if target - k in nums[i + 1:]:

return[i, nums[i + 1:].index(target - k) + i + 1]

nums = [2,7,11,15]

target = 9

s = solution()

print(s.twosum(nums,target))

1)查詢差值時,要在陣列的剩餘項中進行查詢,避免資料混淆;

2)因為傳統的輸出索引是用的index()函式,為了避免遇到陣列中的值都相同的極端情況(比如nums = [3,3], target = 6,這樣輸出是null。),這種情況下考慮使用enumerate()函式構建乙個索引序列。

小貼士

enumerate(sequence, [start=0])

# 1.關於下標的用法

>>>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')]

# 2.關於數值匹配的用法

>>>seq = ['one', 'two', 'three']

>>>

for i, element in enumerate(seq): #第乙個元素為索引,第二個元素為值。

print i, element

0 one

1 two

2 three

python leetcode 最大回文數

直接暴力求解時間超出,選取manacher演算法 class solution def longestpalindrome self,s t join s 前後插入 是為了防止越界,不需要進行邊界判斷 n len t p 0 n 每一處的回文半徑 c r 0 r為當前訪問到的最右邊的值,c為此時對稱...

python LeetCode 奇偶鍊錶

給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。示例 1 輸入 1 2 3 4 5 null ...

python LeetCode 兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...