如何有效地删除Java中堆栈的下半部分元素?

问题描述

如何在Java中设计一种有效的方法删除堆栈中的下半部元素?例如: 我的堆栈是:(1,2,3,4,5,6)。输出为4,6。另一个输入为(1,6,7,8,9,10,11)的示例。输出为6到11。

解决方法

如果堆栈中有元素数量,则可以弹出前一半然后打印下一半(如果您不想丢失元素,则将其推入另一个堆栈中)

如果堆栈中没有元素数,则需要创建另一个堆栈(例如stack2),从stack1中弹出元素并压入stack2,然后保留元素数。

一旦获得计数,就从stack2中弹出元素并推入stack1中,只打印从stack2中弹出的前一半元素。

,

您可以这样做:

int center = stack1.size() / 2;
//Remove the half
int counter = 0;
for(int i=0; counter<center;counter++) {
    stack1.remove(i);
}