image.png

    解法:
    ⚠️:这里两个Integer比较大小,有128的限制,如果超过128,就是在比较对象。会造成报错,必须转化成int
    image.png

    1. public static void main(String[] args) {
    2. Queue q = new LinkedList();
    3. q.add(1);
    4. q.add(2);
    5. System.out.println(q.peek());
    6. Deque d = new LinkedList();
    7. d.addFirst(1);
    8. d.addLast(2);
    9. System.out.println(d.peekFirst());
    10. MaxQueue max_value = new MaxQueue();
    11. max_value.max_value();
    12. max_value.pop_front();
    13. max_value.max_value();
    14. max_value.push_back(46);
    15. max_value.max_value();
    16. max_value.pop_front();
    17. max_value.push_back(868);
    18. max_value.pop_front();
    19. max_value.pop_front();
    20. max_value.push_back(525);
    21. max_value.pop_front();
    22. System.out.println(max_value.max_value());
    23. // "MaxQueue",
    24. // "max_value",
    25. // "pop_front",
    26. // "max_value",
    27. // "push_back",
    28. // "max_value",
    29. // "pop_front",
    30. // "max_value",
    31. // "pop_front",
    32. // "push_back",
    33. // "pop_front",
    34. // "pop_front",
    35. // "pop_front",
    36. // "push_back",
    37. // "pop_front
    38. // max_value
    39. // [null],[-1],[-1],[-1],[46 null],[46],[46],[-1],[-1],[868 null],[868],[-1],[-1],[525 null],[525]
    40. }
    41. public static class MaxQueue {
    42. Queue<Integer> q;
    43. Deque<Integer> d;
    44. public MaxQueue() {
    45. q = new LinkedList<>();
    46. d = new LinkedList<>();
    47. }
    48. public int max_value() {
    49. if(d.isEmpty()) return -1;
    50. return d.peekFirst();
    51. }
    52. public void push_back(int value) {
    53. while(!d.isEmpty() && d.peekLast() < value){
    54. d.pollLast();
    55. }
    56. d.addLast(value);
    57. q.add(value);
    58. }
    59. public int pop_front() {
    60. if(q.isEmpty()) return -1;
    61. System.out.println(d.peekFirst() + "==" + q.peek());
    62. int ans = q.poll();
    63. if(d.peekFirst() == ans){
    64. d.pollFirst();
    65. }
    66. return ans;
    67. }