Stack的当前大小是多少?

das*_*der 0 algorithm stack data-structures

假设最初为空的堆栈S已执行总共25个推送操作,12个顶部操作和10个弹出操作,其中3个返回null以指示 空堆栈.S的当前大小是多少?

我认为S.size = 7因为10个弹出操作有10个中的3个返回null表示空堆栈但不确定它是否正确

任何人都可以给出正确的答案和解释吗?

ami*_*mit 5

  • 你弹出了总数10-3 = 7元素,因为3个弹出窗口没有改变堆栈的状态(和大小),所以只有7个弹出窗口.
  • 你总共推了25个元素.
  • 顶部操作不会更改堆栈的状态(和大小),可以忽略.

堆栈的总大小25-7 = 18在最后.

请注意,操作顺序无关紧要,只有"成功" pop()的数量和push()s的数量.

  • @daskinder您没有关于操作的ORDER的信息.如果订单是'pop(),pop(),pop(),push()*25,pop()*7,top()*12`该怎么办?第一个3`pop()`返回null并且不改变堆栈的大小,只有最后的7个.这是满足问题中描述的条件的一个有效示例. (3认同)