java队列的最大值

class MaxQueue {

    static class ListNode {

        int val;

        ListNode next;

        public ListNode(int val) {

            this.val = val;

        }

    }

    ListNode head;

    ListNode back;

    ListNode max;

    public MaxQueue() {

        

    }

    

    public int max_value() {

        return max == null ? -1 : max.val;

    }

    

    public void push_back(int value) {

        if (back == null) {

            back = new ListNode(value);

            head = back;

            max = back;

            return;

        }

        back.next = new ListNode(value);

        back = back.next;

        if (max != null && back.val > max.val) {

            max = back;

        }

    }

    

    public int pop_front() {

        if (head == null) return -1;

        ListNode res = head;

        head = head.next;

        if (res == back) { // 最后一个节点

            back = null;

        }

        if (res == max) { // 头节点刚好是最大值

            // 更新最大值

            ListNode p = head;

            max = p;

            while (p != null) {

                if (p.val > max.val)

                    max = p;

                p = p.next;

            }

        }

        return res.val;

    }

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chua8n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值