1.题目描述:
2.实例:
3.分析:
看懂题目就没啥好分析的 主要是怕看不懂实例,其实这个实例花里胡哨,但是说白了就是题目的补充 我拿实例1来说:
最大值的方法无输入 队列为空输出为空、入队的方法 有输入 无输出 入队(1)再入(2) 、最大值方法 无输入 有输出 (2)、出队的方法无输入有输出 出1 出2
我的解法就是用stream()里面的方法 我脑子里想到最大值就想到排序 想到stream()流 里面就有max和min方法(具体实现的几种方法我在javaSE里面stream流那张就讲),直接max 然后get嘛 但是值得一提的是看实例2 如果没有值的时候返回-1 所以就不能用get 而是orElse()
区别就是get没有值抛异常 orElse没有值可以返回指定的值
4.具体实现:
package com.ffyc.algorithm;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.Queue;
public class queue59 {
private Queue<Integer> queue;
public queue59() {//构造方法 初始化 null
queue=new LinkedList<>();//arraylist不是队列 linklist是队列
}
public int max_value() {//获取最大值
return queue.stream().max((a,b)->a-b).orElse(-1);
}
public void push_back(int value) {//入队
queue.add(value);//直接入 没啥好说的 add()在链表后添加 也可以用offer()
}
public int pop_front() {//出队
if (queue.isEmpty()){//判空
return -1;
}else {
return queue.remove();//从头出 先入先出 remove()移除链表第一个元素
}
}
public static void main(String[] args) {
queue59 queue59=new queue59();
queue59.push_back(3);
queue59.push_back(5);
queue59.push_back(2);
queue59.push_back(7);
queue59.pop_front();
System.out.println(queue59.max_value());
}
}
5.运行测试:
6.力扣提交: