題目:
給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。
你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。
示例:
給定 nums = [2, 7, 11, 15], target = 9求差值,判斷差值是否在nums陣列裡因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
class時間複雜度:o(n2)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(1) (補充:python中list物件的儲存結構採用的是線性表,因此其查詢複雜度為o(n) 也就是 if b in nums 時間複雜度是o(n))
求差值、把差值存進字典裡作為鍵、索引作為值,第一次迴圈理解:d[7]=0 即字典d=,表示為索引0需要陣列裡值為7的元素配對。 if 判斷是否為前面元素所需要配對的值 , 是則返回兩個索引值。(補充:nums[x] in d 是判斷值是否在字典某個key裡面)
class時間複雜度:o(1) 、空間複雜度o(n) (補充:dict物件的儲存結構採用的是雜湊表(hash表),其在最優情況下查詢複雜度為o(1))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]進行對比
暴力迴圈、不多說
class時間複雜度:o(n2)、空間複雜度:o(1)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
執行時間明顯多於一和二。
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...