Il semble que des tests de codage soient menés à l'étranger lors d'entretiens d'ingénieurs, et dans de nombreux cas, l'essentiel est de mettre en œuvre des fonctions et des classes spécifiques en fonction du thème.
En guise de contre-mesure, il semble qu'un site appelé Let Code prendra des mesures.
Un site qui forme une puissance algorithmique capable de résister à des tests de codage dont on parle très tôt.
Je pense qu'il vaut mieux avoir la puissance de l'algorithme d'un être humain, donc je vais résoudre le problème de manière irrégulière et écrire la méthode que j'ai pensé à ce moment-là sous forme de mémo.
Table de codes Leet commençant à zéro
Dernière fois Leet Code Day 35 "160. Intersection of Two Linked Lists" commençant à zéro
En gros, je voudrais résoudre l'acceptation facile par ordre décroissant.
Twitter Je le fais.
Le niveau de difficulté est facile. C'est la dernière question facile dans les 100 questions les plus appréciées.
Le problème est d'implémenter la classe MinStack avec les fonctions push, pop, top et getMin.
Les spécifications de chaque fonction sont les suivantes.
push(x) -- Push element x onto stack. pop() -- Removes the element on top of the stack. top() -- Get the top element. getMin() -- Retrieve the minimum element in the stack.
Input ["MinStack","push","push","push","getMin","pop","top","getMin"] [[],[-2],[0],[-3],[],[],[],[]]
Output [null,null,null,null,-3,null,0,-2]
Explanation MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); // return -3 minStack.pop(); minStack.top(); // return 0 minStack.getMin(); // return -2
C'est tout pour l'exemple d'utilisation. Je pense que de nombreux programmeurs connaissent Stack, donc je n'y toucherai pas ici.
class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.stack = []
def push(self, x: int) -> None:
minElement = self.getMin()
if minElement == None or x < minElement:
minElement = x
self.stack.append((x,minElement))
def pop(self) -> None:
self.stack.pop()
def top(self) -> int:
if len(self.stack) == 0:
return None
else:
return self.stack[len(self.stack) - 1][0]
def getMin(self) -> int:
if len(self.stack) == 0:
return None
else:
return self.stack[len(self.stack) - 1][1]
# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(x)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()
# Runtime: 72 ms, faster than 38.62% of Python3 online submissions for Min Stack.
# Memory Usage: 17.9 MB, less than 5.36% of Python3 online submissions for Min Stack.
Je pense que le slicing est pratique, mais il semble qu'il sera implémenté de la même manière dans d'autres langues comme d'habitude ... Il est intéressant d'essayer d'implémenter stack quand même, donc je recommande de l'écrire.
Cette fois, ça ressemble à ça. Je vous remercie pour votre travail acharné.
Recommended Posts