在編寫leecode上的演算法第一題「兩數之和」時,遇到了一些問題,如下:
1.引數丟失
>>>solution.twosum([2,3,4,5],8)
typeerror: twosum() missing 1 required positional argument: 'target'
原因:沒有建立物件
解決:>>>a = solution() #括號很重要
>>>a.twosum([2,3,4,5],8)
2.超出時間顯示
原因:時間複雜度高 o(n2)
class solution:
def twosum(self, nums, target):
""":type nums: list[int]
:type target: int
:rtype: list[int]
"""i = 0
n = len(nums)
while i < n:
j = i+1
while j 解決: 降低時間複雜度,o(n)
class solution:
def twosum(self,nums, target):
"""
:type nums: list[int]
:type target: int
:rtype: list[int]
"""
#用len()方法取得nums列表長度
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]進行對比
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...