我正在尝试实现一种堆栈,它具有 push()、pop()、getMaxSoFar()。它应该执行 o(1) 次。但是,我在 push(T value) 中遇到错误,我不知道为什么。错误消息说操作符 ">=" 没有在 T 的类型中定义。我只是想检查代码所以我把 int 类型而不是它工作。
class FastMaxStack<T>
{
private Stack<T> stack;
private Stack<T> maxStack;
public FastMaxStack()
{
stack = new Stack();
maxStack = new Stack();
}
public void push(T value)
{
if(maxStack.isEmpty())
{
maxStack.push(value);
}
else if(value >= maxStack.peek())
{
maxStack.push(value);
}
stack.push(value);
}
public T pop()
{
maxStack.pop();
return stack.pop();
}
public T getMaxSoFar()
{
return maxStack.peek();
}
}
您的push
方法假设>=
每个可能的类型都支持该运算符T
。但是,该运算符仅支持数字类型。
也许你应该定义你的类只对整数进行操作,而不是任何数据类型。
另一方面,也许您可以为所有Comparables
.
class FastMaxStack<Comparable<T>>
{
//etc...
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句