【问题标题】:What is the current size of Stack?Stack的当前大小是多少?
【发布时间】:2015-05-19 09:10:56
【问题描述】:

假设一个最初为空的栈 S 总共执行了 25 次压栈操作, 12个top操作,10个pop操作,其中3个返回null表示一个 空堆栈。 S的当前大小是多少?

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

谁能给出正确答案和解释?

【问题讨论】:

    标签: algorithm data-structures stack


    【解决方案1】:
    • 您总共弹出了 10-3 = 7 个元素,因为弹出了 3 个 没有改变堆栈的状态(和大小),所以只有 7 次弹出。
    • 您总共推送了 25 个元素。
    • 顶部操作不会改变堆栈的状态(和大小),并且 可以忽略。

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

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

    【讨论】:

    • 如果堆栈有超过 10 个元素,为什么 10 个弹出操作中有 3 个返回 null 。它不应该这样做,null 表示一个空堆栈
    • @daskinder 您没有关于操作顺序的信息。如果订单是pop(), pop(), pop(), push() * 25, pop()*7, top()*12。前 3 个 pop() 返回 null 并且不更改堆栈的大小,只有最后 7 个会这样做。这是一个满足问题中描述的条件的有效示例。
    【解决方案2】:

    25 次推送 = 25 次索引

    10 次弹出 = 25 - 10 = 15

    未发生 3 次弹出 = 15 + 3 = 18

    tops无所谓,所以应该是18

    【讨论】:

      【解决方案3】:

      就是push和pop的次数之差。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-22
        • 1970-01-01
        • 1970-01-01
        • 2013-02-26
        • 2012-06-30
        • 2011-03-13
        • 1970-01-01
        • 2011-10-08
        相关资源
        最近更新 更多