239. 滑動(dòng)窗口最大值
題目鏈接:239. 滑動(dòng)窗口最大值
- 單調(diào)隊(duì)列
class MyQueue {
Deque<Integer> deque = new LinkedList<>();
void poll(int val){
if(!deque.isEmpty() && val == deque.peek()){
deque.poll();
}
}
void add(int val){
while(!deque.isEmpty() && val > deque.getLast()){
deque.removeLast();
}
deque.add(val);
}
int peek(){
return deque.peek();
}
}
class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
int []maxArr = new int[nums.length - k + 1];
MyQueue myque = new MyQueue();
for(int i = 0; i < k; i++){
myque.add(nums[i]);
}
maxArr[0] = myque.peek();
for(int i = k; i < nums.length; i++){
myque.add(nums[i]);
myque.poll(nums[i - k]);
maxArr[i - k + 1] = myque.peek();
}
return maxArr;
}
}
347. 前 K 個(gè)高頻元素
題目鏈接:347. 前 K 個(gè)高頻元素
Map 和 優(yōu)先隊(duì)列 API的使用
大頂堆小頂堆的選擇