![](/img/trans.png)
[英]My solution for LeetCode problem 235 works well in local but is rejected by LeetCode
[英]Why some solution works on VSCode but not 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.