簡體   English   中英

Two Sum LeetCode問題報錯:'AttributeError: 'list' object has no attribute 'twoSum''

[英]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))

您的代碼有兩個問題:

  1. 您需要構建Solution object 而不是嵌套列表才能調用twoSum()
  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM