Bonsoir à tous En disant que mon article fait également 400 vues au total Autant que je suis heureux, merci m (_ _) m Si c'est difficile à comprendre, vous pouvez commenter (o ゚ o) non YO--
Le défi d'utiliser mes vacances d'été était également significatif Je suis malade. Aujourd'hui c'est la fin des vacances d'été Je travaillerai à partir de la semaine prochaine. Demain et après-demain, il y aura des formations comme la garde d'enfants et les travaux ménagers (rires)
Trouvez du temps si vous le pouvez Je voudrais continuer cette activité, alors veuillez me soutenir.
Au fait, O (1)!? Je ne sais pas quoi expliquer à partir de là Je vais l'omettre car il sera chauve (rires)
Si vous regardez l'article d'un expert, le point est pour un seul article ou pour l'imbrication ou while + if J'ai senti que ce serait O (1) si je l'arrêtais (je me demande si je peux mettre l'URL moi-même. Enfin, je veux dire). https://qiita.com/drken/items/872ebc3a2b5caaa4a0d0
L'autre jour, j'ai fait une pile avec l'idée suivante, https://qiita.com/AKpirion/items/f3d5b51ab2ee9080e9c6 Pour le moment, push / pop semble n'avoir aucun problème pour comprendre O (1) comme une description.
Désormais, pour l'implémentation de min, lorsque la fonction min est exécutée, il est essentiel d'utiliser l'instruction for pour trouver la valeur minimale à partir des données empilées. Donc, afin de satisfaire O (1), j'ai pensé que ce serait bien si je pouvais mettre à jour la boîte qui stocke la valeur minimale à chaque fois que je pousse. Par conséquent, j'ai ajouté str_min à la valeur initiale.
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") #Boîte pour stocker la valeur minimale
La raison pour laquelle self.str_min est défini sur float ("inf"), c'est-à-dire sur l'infini, est C'est parce que la première valeur poussée peut toujours être stockée dans str_min.
stack_min.py
def min_str(self, value):
#self.str_min = min(self.str_min,value)
if self.str_min > value: #La valeur de la valeur d'entrée est str_S'il est inférieur à min, str_mise à jour min
self.str_min = value #self.str_min <Si c'est de la valeur, ne faites rien et retournez
return self.str_min
Personnellement, je pense que vous pouvez le faire avec min () comme indiqué dans le commentaire juste en dessous de def .. dans la figure ci-dessus. Je n'étais pas confiant quand on m'a dit O (1)!?, Alors je me suis enfui avec la déclaration if. Y a-t-il un moyen de vérifier cela!? Je n'ai pas le temps pour le moment, alors je vais aller à Push.
stack_min.py
def push(self, value):
if self.ptr >= self.capa:
raise top.full
self.str[self.ptr] = value #Pousser les données vers str!
top.min_str(self, value) #Données poussées et str_Comparer avec min et mettre à jour la valeur minimale
self.ptr += 1
La description de Push est fondamentalement la même qu'avant, En insérant top.min_str (self, value), la valeur minimale peut être mise à jour chaque fois que Push est effectué. C'était bien, il semble que le problème de la recherche puisse être simplifié (* '艸 `)
Et la dernière fois que tu appelles min J'avais besoin d'un peu d'ingéniosité. Pour l'instant, jetez un œil au code ci-dessous.
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"))) #Comparez l'infini et le minimum
else:
break
Je peux appeler min en tapant d'abord 3, Puisqu'il s'agit de def min_str (self, value) Si vous ne mettez rien dans la partie valeur, vous obtiendrez une erreur. J'ai donc poussé l'infini pour m'assurer de pouvoir obtenir la valeur minimale.
Cette fois, il n'y avait pas de photos avec des images, je suis désolé. J'ai également écrit un article comme celui-ci, alors n'hésitez pas à me contacter.
Essayez d'implémenter deux piles en Python sur un seul tableau https://qiita.com/AKpirion/items/2e74eecd30063a01d2fc
Passez un bon week-end ・ ω ・ ´) 尸
Recommended Posts