一、力扣
1、数据流的中位数
295. 数据流的中位数

class MedianFinder {
PriorityQueue<Integer> firQueue;
PriorityQueue<Integer> secQueue;
public MedianFinder() {
firQueue = new PriorityQueue<>((a, b) -> b.compareTo(a));
secQueue = new PriorityQueue<>((a, b) -> a.compareTo(b));
}
public void addNum(int num) {
if (firQueue.isEmpty() || num < firQueue.peek()) {
firQueue.offer(num);
if (firQueue.size() - secQueue.size() > 1) {
secQueue.offer(firQueue.poll());
}
} else {
secQueue.offer(num);
if (secQueue.size() > firQueue.size()) {
firQueue.offer(secQueue.poll());
}
}
}
public double findMedian() {
if (firQueue.size() > secQueue.size()) {
return (double) firQueue.peek();
} else {
return (double) (firQueue.peek() + secQueue.peek()) / 2;
}
}
}
2、破冰游戏
LCR 187. 破冰游戏

class Solution {
public int iceBreakingGame(int num, int target) {
return f(num, target);
}
public int f(int num, int target) {
if (num == 1) {
return 0;
}
int x = f(num - 1, target);
return (target + x) % num;
}
}
3、用队列实现栈
225. 用队列实现栈

class MyStack {
ArrayDeque<Integer> queue1;
ArrayDeque<Integer> queue2;
public MyStack() {
queue1 = new ArrayDeque<>();
queue2 = new ArrayDeque<>();
}
public void push(int x) {
queue1.offer(x);
while (!queue2.isEmpty()) {
queue1.offer(queue2.poll());
}
queue2 = queue1;
queue1 = new ArrayDeque<>();
}
public int pop() {
return queue2.poll();
}
public int top() {
return queue2.peek();
}
public boolean empty() {
return queue1.isEmpty() && queue2.isEmpty();
}
}