python - 为什么某些解决方案适用于 VSCode 而不适用于 LeetCode?
问题描述
我尝试在 Visual Studio Code 上使用以下解决方案来解决这个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
该类的一个实例测试一个示例。在 LeetCode 中,使用类的新实例执行多个测试用例CustomStack
。由于它是类变量,而不是实例变量,因此它在程序执行期间创建vars
的所有实例之间共享。CustomStack
这意味着每个实例修改相同的list
.
您已经展示了实现特定于类实例的变量的正确方法是在__init__
方法期间定义它:
class CustomStack:
def __init__(self, maxSize):
self.vals =[]
self.maxSize = maxSize
推荐阅读
- eclipse - 当我在 Eclipse 中打开对话框时,背景变为白色
- c++ - 无法使用 lambda 函数创建 unordered_set
- mvvmcross - MVVMcross 从 4 升级到 6.2.1 出现错误 Mvx 不包含关闭跟踪错误、警告等的定义
- cmake - 使用 CMake 在 Google colab 上构建 dlib
- java - 成功调用 onAnimationUpdate,但在 View::onDraw 中使用 ValueAnimator 的显示没有变化
- python - 圣人句法 A.
- vb6 - 空格字符滑入字符串的问题
- mysql - 搜索数据类型为 Mediumtext/Largetext 的字符串的一部分
- r - 错误:GGPlot 2 几何段必须是连续的(X 是数字不连续)
- tcl - 如何列出 Tcl/Tk 中的所有顶层,包括通过 wm manage 创建的顶层?