【发布时间】:2018-11-21 14:20:14
【问题描述】:
盘子堆:想象一下(字面意思)一堆盘子。如果堆栈太高,它可能会倒塌。
因此,在现实生活中,我们可能会在前一个堆栈超过某个阈值时启动一个新堆栈。实现一个模仿这个的数据结构 SetOfStacks。 SetOfStacks 应该由几个堆栈组成,并且一旦前一个堆栈超出容量,就应该创建一个新堆栈。
SetOfStacks。 push() 和 SetOfStacks。 pop() 的行为应该与单个堆栈相同(也就是说,pop() 应该返回与只有一个堆栈时相同的值)。
跟进
实现一个函数 popAt (int index),它在特定子堆栈上执行弹出操作。
pop at index的书籍解决方案:
public int popAt(int index) {
21 return leftShift (index, true);
22 }
23
24 public int leftShift(int index, boolean removeTop) {
25 Stack stack = stacks.get(index);
26 int removed_item;
27 if (removeTop) removed_item = stack.pop();
28 else removed_item = stack.removeBottom( );
29 if (stack.isEmpty(» {
30 stacks.remove(index);
31 } else if (stacks.size() > index + 1) {
32 int v = leftShift(index + 1, false);
33 stack . push(v);
34 }
35 return removed_item;
36 }
32 i nt v = leftShift(index + 1, false); 行的解释缺失。谁能帮我解决这个问题?
【问题讨论】:
标签: stack