मैंने इस 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]

लेकिन यह LeetCode पर विफल रहता है जो प्रिंट करता है [नल, अशक्त, 85, अशक्त, 181, अशक्त, अशक्त, 196, अशक्त, अशक्त, अशक्त, अशक्त]

मुझे पता है कि सही समाधान यह हो सकता है:

class CustomStack:
    def __init__(self, maxSize):
        self.vals =[]
        self.maxSize = maxSize

लेकिन मूल संस्करण वीएससीओडी पर क्यों काम करता है, लेटकोड पर नहीं?

-1
skyclouder 15 मार्च 2020, 08:07

1 उत्तर

सबसे बढ़िया उत्तर

वीएस कोड में अपना प्रोग्राम चलाते समय, आप CustomStack वर्ग के एक उदाहरण का उपयोग करके एक उदाहरण का परीक्षण कर रहे हैं। LeetCode में, CustomStack वर्ग के एक नए उदाहरण का उपयोग करके कई परीक्षण मामलों को निष्पादित किया जाता है। चूंकि vars एक वर्ग चर है, आवृत्ति चर नहीं है, इसे आपके प्रोग्राम के निष्पादन के दौरान बनाए गए सभी CustomStack उदाहरणों में साझा किया जा रहा है। इसका अर्थ है कि प्रत्येक उदाहरण समान list को संशोधित करता है।

आप पहले ही दिखा चुके हैं कि किसी वर्ग के उदाहरण के लिए विशिष्ट चर को लागू करने का सही तरीका __init__ विधि के दौरान इसे परिभाषित करना है:

class CustomStack:
    def __init__(self, maxSize):
        self.vals =[]
        self.maxSize = maxSize
2
dspencer 15 मार्च 2020, 05:16