为什么某些解决方案适用于 VSCode 但不适用于 LeetCode?
Why some solution works on VSCode but not LeetCode?
我尝试通过 Visual Studio 代码中的以下解决方案解决此 Leetcode 问题:
class CustomStack:
vals = list()
def __init__(self, maxSize):
self.maxSize = maxSize
def push(self, x):
if len(self.vals) < self.maxSize:
self.vals.append(x)
print(self.vals)
def pop(self):
if len(self.vals) > 0:
val = self.vals.pop()
print(val)
return val
else:
print(-1)
return -1
def increment(self, k, val):
k = min(k, len(self.vals))
for i in range(k):
self.vals[i] += val
print(self.vals)
它在 VSCode 上打印正确的数字:[null,null,34,null,-1,null,null,63,null,null,null,null]
但它在打印 [null,null,85,null,181,null,null,196,null,null,null,null]
的 LeetCode 上失败
我知道正确的解决方案是这样的:
class CustomStack:
def __init__(self, maxSize):
self.vals =[]
self.maxSize = maxSize
但为什么原始版本适用于 VSCode,而不适用于 Leetcode?
当 运行 您的程序在 VS Code 中时,您正在使用 CustomStack
class 的一个实例测试单个示例。在 LeetCode 中,使用 CustomStack
class 的新实例执行多个测试用例。由于 vars
是一个 class 变量,而不是实例变量,因此它在程序执行期间创建的所有 CustomStack
实例之间共享。这意味着每个实例修改相同的 list
.
您已经表明实现特定于 class 实例的变量的正确方法是在 __init__
方法期间定义它:
class CustomStack:
def __init__(self, maxSize):
self.vals =[]
self.maxSize = maxSize
我尝试通过 Visual Studio 代码中的以下解决方案解决此 Leetcode 问题:
class CustomStack:
vals = list()
def __init__(self, maxSize):
self.maxSize = maxSize
def push(self, x):
if len(self.vals) < self.maxSize:
self.vals.append(x)
print(self.vals)
def pop(self):
if len(self.vals) > 0:
val = self.vals.pop()
print(val)
return val
else:
print(-1)
return -1
def increment(self, k, val):
k = min(k, len(self.vals))
for i in range(k):
self.vals[i] += val
print(self.vals)
它在 VSCode 上打印正确的数字:[null,null,34,null,-1,null,null,63,null,null,null,null]
但它在打印 [null,null,85,null,181,null,null,196,null,null,null,null]
的 LeetCode 上失败我知道正确的解决方案是这样的:
class CustomStack:
def __init__(self, maxSize):
self.vals =[]
self.maxSize = maxSize
但为什么原始版本适用于 VSCode,而不适用于 Leetcode?
当 运行 您的程序在 VS Code 中时,您正在使用 CustomStack
class 的一个实例测试单个示例。在 LeetCode 中,使用 CustomStack
class 的新实例执行多个测试用例。由于 vars
是一个 class 变量,而不是实例变量,因此它在程序执行期间创建的所有 CustomStack
实例之间共享。这意味着每个实例修改相同的 list
.
您已经表明实现特定于 class 实例的变量的正确方法是在 __init__
方法期间定义它:
class CustomStack:
def __init__(self, maxSize):
self.vals =[]
self.maxSize = maxSize