使用 o(1) 实现堆栈

Sangmin Choi

我正在尝试实现一种堆栈,它具有 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用数组实现堆栈

来自分类Dev

使用函数调用实现堆栈

来自分类Dev

使用链表实现堆栈损坏

来自分类Dev

使用调用堆栈在C中实现堆栈数据结构?

来自分类Dev

使用堆栈实现优先级队列

来自分类Dev

使用2个堆栈实现队列

来自分类Dev

使用堆栈实现深度受限的路径查找

来自分类Dev

在Java中使用数组实现堆栈

来自分类Dev

使用数组,计数和索引实现堆栈

来自分类Dev

如何使用std :: vector实现堆栈?

来自分类Dev

使用堆栈实现优先级队列

来自分类Dev

使用2个队列实现堆栈

来自分类Dev

在Java中使用数组实现堆栈

来自分类Dev

在我的实现中使用堆栈是否正确?

来自分类Dev

在O1或O3上使用Callgrind进行性能分析?

来自分类Dev

使用-O1和内联汇编器的GCC分段故障

来自分类Dev

如何使LLVM Opt工具报告每个优化-O1,-O2等成功使用的分析?

来自分类Dev

使用-O2与-O1时Cygwin64 gcc C /汇编器崩溃

来自分类Dev

使用c的堆栈推送功能,使用双向链表实现

来自分类Dev

如何使用Java 8 Stream实现堆栈迭代

来自分类Dev

使用存储的proc /函数在SQL Server中实现堆栈(LIFO)

来自分类Dev

是否可以仅使用lambda表达式实现堆栈?

来自分类Dev

关于使用链接列表的堆栈实现中的嵌套类

来自分类Dev

堆栈和队列:使用数组更容易实现?

来自分类Dev

如何使用优先级队列实现堆栈?

来自分类Dev

使用灵活的数组成员实现堆栈

来自分类Dev

如何在Java中使用HashMap实现堆栈?

来自分类Dev

是否可以仅使用lambda表达式实现堆栈?

来自分类Dev

使用堆栈和列表ADT的推送方法实现