Fügen Sie die Funktion hinzu, um den Mindestwert (min) zu dem von Python erstellten Stapel zurückzugeben, aber push / pop / min ist das grundlegende O (1) !!

Guten Abend alle zusammen Mein Artikel ist auch insgesamt 400 Aufrufe Soweit ich glücklich bin, danke m (_ _) m Wenn es schwer zu verstehen ist, können Sie (o ゚ o) no YO-- kommentieren.

Die Herausforderung, meine Sommerferien zu nutzen, war ebenfalls bedeutsam Ich bin krank. Heute ist das Ende der Sommerferien Ich werde ab nächster Woche arbeiten. Morgen, übermorgen, werden Schulungen wie Kinderbetreuung und Hausarbeit angeboten (lacht)

Finde Zeit, wenn du kannst Ich möchte diese Aktivität fortsetzen, bitte unterstützen Sie mich.

Übrigens, O (1) !? Ich weiß nicht, was ich von dort erklären soll Ich werde es weglassen, weil es kahl sein wird (lacht)

Wenn Sie sich den Artikel von einem Experten ansehen, ist der Punkt für ein einzelnes Element oder für das Verschachteln oder während + wenn Ich hatte das Gefühl, dass es O (1) sein würde, wenn ich es stoppen würde (ich frage mich, ob ich die URL selbst einfügen kann. Nun, ich meine). https://qiita.com/drken/items/872ebc3a2b5caaa4a0d0

Neulich habe ich einen Stapel mit der folgenden Idee gemacht: https://qiita.com/AKpirion/items/f3d5b51ab2ee9080e9c6 Push / Pop scheint vorerst kein Problem damit zu haben, O (1) als Beschreibung zu verstehen.

Wenn Sie für die min-Implementierung die min-Funktion ausführen, müssen Sie die for-Anweisung verwenden, um den Mindestwert in den gestapelten Daten zu ermitteln. Um O (1) zu erfüllen, dachte ich, es wäre gut, wenn ich die Box aktualisieren könnte, in der der Mindestwert bei jedem Drücken gespeichert wird. Daher habe ich dem Anfangswert str_min hinzugefügt.

stack_min.py


class top:
    def __init__(self, capacity: int = 5):
        self.str = [None] * capacity
        self.capa = capacity
        self.ptr = 0
        self.str_min = float("inf") #Feld zum Speichern des Mindestwerts

Es ist der float ("inf"), der self.str_min auf unendlich setzt Dies liegt daran, dass der erste Push-Wert immer in str_min gespeichert werden kann.

stack_min.py


    def min_str(self, value):
        #self.str_min = min(self.str_min,value)
        if self.str_min > value: #Der Eingabewert ist str_Wenn es kleiner als min ist, str_Update min
            self.str_min = value #self.str_min <Wenn es ein Wert ist, tun Sie nichts und kehren Sie zurück
        return self.str_min

Persönlich denke ich, dass Sie es mit min () tun können, wie im Kommentar direkt unter def .. in der obigen Abbildung gezeigt. Ich war nicht sicher, als mir O (1) gesagt wurde!?, Also lief ich mit der if-Anweisung davon. Gibt es eine Möglichkeit, dies zu überprüfen? Ich habe vorerst keine Zeit, also gehe ich zu Push.

stack_min.py


    def push(self, value):
        if self.ptr >= self.capa:
            raise top.full
        self.str[self.ptr] = value  #Daten an str!
        top.min_str(self, value)    #Daten und str_Vergleichen Sie mit min und aktualisieren Sie den Mindestwert
        self.ptr += 1

Die Beschreibung von Push ist grundsätzlich dieselbe wie zuvor. Durch Einfügen von top.min_str (self, value) kann der Mindestwert jedes Mal aktualisiert werden, wenn Push ausgeführt wird. Es war gut, es scheint, dass die Mühe der Suche vereinfacht werden kann (* '艸 `)

Und das letzte Mal, wenn Sie min anrufen Ich brauchte ein wenig Einfallsreichtum. Sehen Sie sich zunächst den folgenden Code an.

stack_min.py


while True:
    num = int(input("select 1.push , 2.pop : , 3.min "))

    if num == 1:
        s = int(input("enter data: "))
        try:
            test.push(s)
        except test.full:
            print("full!")
    elif num == 2:
        try:
            x = test.pop()
            print(x)
        except test.empty:
            print("empty!")
    elif num == 3:
        print(test.min_str(float("inf"))) #Vergleiche Unendlichkeit und Minimum
    else:
        break

Ich kann min anrufen, indem ich zuerst 3 eingebe. Da es def min_str ist (self, value) Wenn Sie nichts in den Wertteil einfügen, wird eine Fehlermeldung angezeigt. Also habe ich unendlich gedrückt, um sicherzustellen, dass ich den Mindestwert bekomme.

Diesmal gab es keine Bilder mit Bildern, tut mir leid. Ich habe auch einen Artikel wie diesen geschrieben, also zögern Sie bitte nicht, mich zu kontaktieren.

Versuchen Sie, zwei Stapel in Python auf einem Array zu implementieren https://qiita.com/AKpirion/items/2e74eecd30063a01d2fc

Schönes Wochenende ・ ω ・ ´) 尸

Recommended Posts

Fügen Sie die Funktion hinzu, um den Mindestwert (min) zu dem von Python erstellten Stapel zurückzugeben, aber push / pop / min ist das grundlegende O (1) !!
Fügen Sie eine Funktion hinzu, um dem Wetter heute mitzuteilen, dass der Bot locker ist (hergestellt von Python).
[Einführung in Python] So teilen Sie eine Zeichenfolge mit der Funktion split
[Python] Was ist ein formales Argument? So stellen Sie den Anfangswert ein
[Python] Erklärt anhand eines konkreten Beispiels, wie die Bereichsfunktion verwendet wird
[Einführung in Python] So schreiben Sie eine Zeichenfolge mit der Formatierungsfunktion
Ich habe eine Funktion erstellt, um die Bewegung eines zweidimensionalen Arrays (Python) zu sehen.
[Python] Stellen Sie sicher, dass die empfangene Funktion eine benutzerdefinierte Funktion ist
[Linux] [C / C ++] So ermitteln Sie den Wert der Rücksprungadresse einer Funktion und den Funktionsnamen des Aufrufers
[C / C ++] Übergeben Sie den in C / C ++ berechneten Wert an eine Python-Funktion, um den Prozess auszuführen, und verwenden Sie diesen Wert in C / C ++.
Der Wert von meta beim Angeben einer Funktion ohne Rückgabewert mit Dask dataframe gilt
Ich habe eine Klasse erstellt, um das Analyseergebnis von MeCab in ndarray mit Python zu erhalten
Ich habe eine Funktion zum Trimmen des Bildes von Python openCV erstellt. Verwenden Sie sie daher bitte.
Ich habe auch versucht, die Funktionsmonade und die Zustandsmonade mit dem Generator in Python nachzuahmen
Ich möchte initialisieren, wenn der Wert leer ist (Python)
Erstellen Sie einen Mastodon-Bot mit einer Funktion, die automatisch mit Python antwortet
Mindestkenntnisse, um mit dem Python-Protokollierungsmodul zu beginnen
Ich habe ein Paket erstellt, um Zeitreihen mit Python zu filtern
Wahrscheinlich der einfachste Weg, um mit Python 3 ein PDF zu erstellen
Ich habe eine Funktion erstellt, um das Modell von DCGAN zu überprüfen
So geben Sie char * in einer Rückruffunktion mit ctypes in Python zurück
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
Die übliche Art, einen Kernel mit Jupyter Notebook hinzuzufügen
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
Extrahieren Sie den Wert, der einem Wert am nächsten kommt, aus einem Listenelement in Python
Wenn im Python-Wörterbuch auf einen nicht vorhandenen Schlüssel zugegriffen wird, initialisieren Sie ihn mit einem beliebigen Wert
Ich habe eine Funktion erstellt, um zu überprüfen, ob der Webhook vorerst in Lambda empfangen wird
Ein einfacher Grund, warum der Rückgabewert von round (2.675,2) in Python 2,67 beträgt (in Wirklichkeit sollte er 2,68 betragen ...)