【问题标题】:Challenging Problems Involving Stacks (Data Structures) [closed]涉及堆栈(数据结构)的具有挑战性的问题[关闭]
【发布时间】:2011-08-26 04:31:51
【问题描述】:

有谁知道我在哪里可以获得很多涉及堆栈使用的具有挑战性的编程问题?我想用超难的问题挑战自己。

【问题讨论】:

  • 为什么不购买/借用 langsam/tennenbaum 的“使用 C 和 C++ 的数据结构”?你会得到足够的问题一周,只是为了堆栈。 :)

标签: algorithm data-structures stack


【解决方案1】:

我最喜欢的

  1. 使用堆栈将前缀表达式转换为后缀
  2. 使用 O(1) 实现堆栈以访问最大元素
  3. 实施没有河内塔 递归。 :)

采用任何该死的递归程序,它是直觉递归的,并尝试迭代地实现它。每个递归都有一个迭代解决方案。 这应该会让你忙一阵子。 :)

顺便说一句, 为什么不购买/借用 langsam/tennenbaum 的“使用 C 和 C++ 的数据结构”?

你会得到一个星期足够的问题。 :)

【讨论】:

  • 不是 Langsam、Augenstein 和 Tenenbaum 吗?
  • 抱歉忘记了奥根斯坦的名字。 :)
【解决方案2】:

Google 搜索堆栈数据结构问题会发现很多有趣的东西。以下是一些有趣的(根据我的判断,从易到难):

  1. 检查文本中的平衡括号、大括号和其他成对的分隔符。

  2. 编写一个后缀计算器。 (所以1 3 2 4 + * - 应该计算 1 - (3 * (2+4))。)

  3. 使用堆栈解决“N 个皇后”问题。 (将 N 个皇后放在 N x N 棋盘上,这样没有两个皇后在同一行、同一列或同一对角线上。)

【讨论】:

    【解决方案3】:

    破解编码面试,第四版:150个编程面试问题和解决方案: http://www.amazon.com/Cracking-Coding-Interview-Fourth-Programming/dp/145157827X

    第 3 章专门讨论堆栈和队列问题。这是一个示例问题:

    你会如何设计一个栈,除了 push 和 pop,还有一个函数 min 可以返回最小元素? push、pop 和 min 都应该在 O(1) 时间内运行。

    【讨论】:

    • 我会检查这本书,但示例问题并不具有挑战性。它的解决方案几乎是显而易见的——在你推动的时候进行比较。
    • @Obinna,这对 push 来说很好,但你对 pop 做了什么? O(1),记住!
    • @Obinna,坦率地说,大多数编程问题都归结为相对简单的解决方案,事后看来是显而易见的。如果某件事有解决方案,那么它可能不再被认为是“超级难”,它的解决方案是显而易见的(如果你对底层概念有扎实的理解),但如果它没有解决方案,那么它肯定是“超级难”,而您发现它的可能性令人沮丧!
    • 好的。我现在明白了。我仍然会得到你推荐的书。谢谢。
    【解决方案4】:

    您可以学习基于堆栈的语言,如 Forth,或堆栈虚拟机,如 MS 的 CIL VM。任何一个都将迫使您重新考虑如何实现您在其中编写的任何内容以利用堆栈。

    【讨论】:

      【解决方案5】:

      去图书馆看看关于数据结构的教科书。它们都应该放在一起,这样您就可以随时找到您当前教科书的索书号,其他教科书就在附近。

      我希望大多数人会有专门关于堆栈的章节,但会有章节结束的问题。会有很多重叠,但你应该能够很好地选择不同难度的问题,以及对标准问题的一系列不同解释。

      【讨论】:

        猜你喜欢
        • 2019-03-21
        • 1970-01-01
        • 2019-03-20
        • 1970-01-01
        • 2013-07-18
        • 2011-05-07
        • 1970-01-01
        • 2023-03-22
        • 2019-05-10
        相关资源
        最近更新 更多