LeetCode兩數之和 Python《一》

2022-02-04 01:31:22 字數 2229 閱讀 5650

題目:

給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。

你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。

示例:

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

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

所以返回 [0, 1]

求差值,判斷差值是否在nums陣列裡

class

solution:

deftwosum(self, nums, target):

""":type nums: list[int]

:type target: int

:rtype: list[int]

"""n =len(nums)

for x in

range(n):

b = target-nums[x]

if b in

nums:

y =nums.index(b)

if y!=x:

return

x,y

時間複雜度:o(n2)

,空間複雜度:o(1)   (補充:python中list物件的儲存結構採用的是線性表,因此其查詢複雜度為o(n) 也就是 if b in nums 時間複雜度是o(n))

求差值、把差值存進字典裡作為鍵、索引作為值,第一次迴圈理解:d[7]=0 即字典d=,表示為索引0需要陣列裡值為7的元素配對。 if 判斷是否為前面元素所需要配對的值 , 是則返回兩個索引值。(補充:nums[x] in d  是判斷值是否在字典某個key裡面)

class

solution:

deftwosum(self, nums, target):

""":type nums: list[int]

:type target: int

:rtype: list[int]

"""n =len(nums)

#建立乙個空字典

d ={}

for x in

range(n):

a = target -nums[x]

#字典d中存在nums[x]時

if nums[x] in

d:

return

d[nums[x]],x

#否則往字典增加鍵/值對

else

: d[a] =x

#邊往字典增加鍵/值對,邊與nums[x]進行對比

時間複雜度:o(1) 、空間複雜度o(n) (補充:dict物件的儲存結構採用的是雜湊表(hash表),其在最優情況下查詢複雜度為o(1))

暴力迴圈、不多說

class

solution:

deftwosum(self, nums, target):

""":type nums: list[int]

:type target: int

:rtype: list[int]

"""#

用len()方法取得nums列表的長度

n =len(nums)

#x取值從0一直到n(不包括n)

for x in

range(n):

#y取值從x+1一直到n(不包括n)

#用x+1是減少不必要的迴圈,y的取值肯定是比x大

for y in range(x+1,n):

#假如 target-nums[x]的某個值存在於nums中

if nums[y] == target -nums[x]:

#返回x和y

return

x,y

時間複雜度:o(n2)、空間複雜度:o(1)

執行時間明顯多於一和二。

leetcode 兩數之和與兩數之和

題目描述 給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。說明 返回的下標值 index1 和 index2 不是從零開始的。你可以假設每個輸入只對應唯一的答案,而且你不...

LeetCode 兩數之和

基礎不好,筆試 題沒做好,校招沒offer,趕緊來刷題 這裡採用兩種方法來做,比較效能。nums i for i in range 1,100000000 target 3 class solution object deftwosum self,nums,target if len nums 1 ...

兩數之和(LEETCODE)

給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 下面是 include stdafx.h includ...