![](/img/trans.png)
[英]AttributeError: 'list' object has no attribute 'copy' in leetcode editor, but in my PyCharm it's no error
[英]Two Sum LeetCode problem error: 'AttributeError: 'list' object has no attribute 'twoSum''
我有以下代碼:
class Solution:
def __init__(self, nums, target):
self.nums = nums
self.target = target
def twoSum(self):
for i in range(len(self.nums)):
for j in range(i + 1, len(self.nums)):
if nums[j] == self.target - self.nums[i]:
return [i, j]
num1 = [[2,7,11,15],9]
num1.twoSum()
print(num1)
為什么此代碼會產生以下錯誤?
AttributeError: 'list' object has no attribute 'twoSum'
您獲得的代碼是其中之一,具體取決於您選擇的是 Python 2 還是 Python 3:
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
您應該實現twoSum
方法,而不是添加__init__
方法並更改twoSum
方法的簽名。
正確實現后,如果你想在本地測試它,可以這樣做:
print(Solution().twoSum([2,7,11,15], 9))
您的代碼有兩個問題:
Solution
object 而不是嵌套列表才能調用twoSum()
。twoSum
function 中的if
語句應該使用self.nums
而不是nums
,指的是您在構造函數中設置的屬性。這是解決這兩個問題的代碼片段:
class Solution:
def __init__(self, nums, target):
self.nums = nums
self.target = target
def twoSum(self):
for i in range(len(self.nums)):
for j in range(i + 1, len(self.nums)):
if self.nums[j] == self.target - self.nums[i]:
return [i, j]
sol = Solution([2,7,11,15], 9)
print(sol.twoSum()) # Prints [0, 1]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.