站内站外找到的解答都是关于__init__()写错了的问题。可是我没用__init__()啊。求大神指教我错在哪里了???
这是leetcode上的45题,看的别人的答案,在leetcode上能运行出来,自己在jupyter book上就运行不出来了(加了最后2句)。
from typing import List
class Solution:
def jump(self, nums: List[int]) -> int:
counter = 0 # 移动次数
curr_end = 0 # 当前跳跃的终点
curr_farthest = 0 # 最远位置的下标
for i in range(len(nums) - 1):
curr_farthest = max(curr_farthest, i + nums[i])
if i == curr_end:
counter += 1
curr_end = curr_farthest
return counter
a = Solution([2,3,1,1,4])
print(a.jump())
报错信息如下
TypeError Traceback (most recent call last)
in
13 return counter
14
---> 15 a = Solution([2,3,1,1,4])
16 print(a.jump())
TypeError: Solution() takes no arguments
直接类名加括号调用的就是__init__函数,别人一看你这个错就知道是跟__init__有关才会那么说。
你都写了是jump函数传入这个数组,为什么还要直接用Solution调用呢。
这样写
a = Solution()
print(a.jump([2,3,1,1,4]))
出问题的时候自己检查,语言、编译环境和网站不会犯这种低级错误的
这说得很清楚了,solution 这个函数定义的参数个数和你调用的参数个数不同,你要么让函数不要参数,要么调用的时候加上参数