【发布时间】:2018-10-08 18:35:44
【问题描述】:
你能帮我理解这行代码发生了什么吗?
def push(self, x):
self.stack.append(x)
if len(self.minStack):
if x < self.minStack[-1][0]:
self.minStack.append([x, 1])
elif x == self.minStack[-1][0]:
self.minStack[-1][1] += 1
else:
self.minStack.append([x, 1])
取自这段代码:
class MinStack2:
def __init__(self):
self.stack, self.minStack = [], []
# @param x, an integer
# @return an integer
def push(self, x):
self.stack.append(x)
if len(self.minStack):
if x < self.minStack[-1][0]:
self.minStack.append([x, 1])
elif x == self.minStack[-1][0]:
self.minStack[-1][1] += 1
else:
self.minStack.append([x, 1])
您也可以在这个 GitHub 帐户中找到它:https://github.com/kamyu104/LeetCode/blob/master/Python/min-stack.py
提前谢谢你
如果对您有任何误解,请不要随便标记。留下反馈。这是一个学习的平台,我觉得在没有解释的情况下标记帖子是非常没有教养的
【问题讨论】:
-
How to debug small programs (#2) - 使用代码,在其上添加输出语句并提供演示数据 - 直到您理解为止。提示:有 2 个列表(又名堆栈),一个按顺序获取所有元素,另一个在其中保存列表,其中包含“被推送且当时最小的元素”以及推送了多少个计数器 - 只是打印 @ 987654327@ 和
self.minStack在push(..)的开头/结尾处并一次喂它[2,2,3,4,2,1,2,3,4,5,6,0]应该让您了解它的作用。 -
这个平台有关于你能学到什么的规则——它不是一个“教程”平台或“解释我的代码”论坛——所以你的问题超出了主题的范围。要了解详细信息,请阅读 how to ask 和 on-topic - 有时问题会得到回答,有时会被否决并标记为关闭 - 如果发生任何一种情况都没什么大不了的 - 它不反对 你 它只是关于如何论坛用户看到你的问题,如果它适合。
-
@PatrickArtner,我很高兴您留下了反馈并且没有标记帖子。我绝对知道标记帖子并不反对 me 。此外,我听说 stackoverflow 是一个提问的平台。我的问题当然不是针对教程,而是简单的回答和澄清。
标签: python python-3.x stack min