coursera算法公开课练习题Interview(3)

来源:互联网 发布:网络电缆是什么样的 编辑:程序博客网 时间:2024/05/21 11:01
  1. Question: Queue with two stacks. Implement a queue with two stacks so that each queue operations takes a constant amortized number of stack operations.

    问题描述: 这里的问题是想要使用两个堆栈来实现的队列。

    解决方案: 这里主要的算法就是现将元素压入栈1,再从栈1弹出去这个元素并将其压到栈2。具体实现的伪代码如下:

    • Enqueue: 将所有元素压入到栈1里面去
    • Dequeue Operation : 如果栈2是空, 将栈1的所有元素压入到栈2
    具体实现代码如下:QueueWithTwoStacks

  2. Question: Stack with max. Create a data structure that efficiently supports the stack operations (push and pop) and also a return-the-maximum operation. Assume the elements are reals numbers so that you can compare them.

    问题描述: 这里就是要求含有一个寻找最大元素方法的栈的实现。

    解决方案: 使用两个堆栈,一个包含所有元素,另一个包含最大值。 要添加一个元素,压到第一个栈里面去; 如果它大于第二堆栈上的最上面的元素,也将它压到第二堆栈。 要弹出元素,先从第一个堆栈中弹出; 如果它是第二个堆栈上的顶部元素,也从第二个堆栈弹出它。 要找到最大值,返回第二个堆栈上的顶部项。

  3. Question: 关于为什么Java不支持泛型数组。

    Answer: 这个问题就是Java里面的泛型实现中使用的类型擦除导致的问题,数组在创建的时候是必须知道内部数据类型的,并会根据类型信息来对添加的元素进行类型检查。

0 0
原创粉丝点击