初雪之音

# 思路一

``````import java.util.*;

class ListNode {
int val;
ListNode next;

ListNode(int x) {
val = x;
}
}

class TreeNode {
int val;
TreeNode left;
TreeNode right;

TreeNode(int x) {
val = x;
}
}

public class Solution {
class StackWithMax {
Stack<Integer> m_data = new Stack<>();
Stack<Integer> m_max = new Stack<>();

public void push(int e) {
m_data.push(e);
if (m_max.isEmpty() || m_max.peek() < e) {
m_max.push(e);
} else {
m_max.push(m_max.peek());
}
}

public int peek() {
int result = 0;

if (!m_data.isEmpty()) {
result = m_data.peek();
}

return result;
}

public void pop() {
if (!m_data.isEmpty()) {
m_data.pop();
m_max.pop();
}
}

public int max() {
int result = 0;
if (!m_max.isEmpty()) {
result = m_max.peek();
}
return result;
}

public boolean isEmpty() {
return m_data.isEmpty();
}
}

class QueueWithMax {
StackWithMax input = new StackWithMax();
StackWithMax output = new StackWithMax();

public void push(int e) {
input.push(e);
}

public int peek() {
int result = 0;
if (output.isEmpty()) {
while (!input.isEmpty()) {
output.push(input.peek());
input.pop();
}
}
if (!output.isEmpty()) {
result = output.peek();
}
return result;
}

public void pop() {
if (output.isEmpty()) {
peek();
}
output.pop();
}

public int max() {
return Math.max(input.max(), output.max());
}

public boolean isEmpty() {
return input.isEmpty() && output.isEmpty();
}
}

public ArrayList<Integer> maxInWindows(int[] num, int size) {
ArrayList<Integer> list = new ArrayList<>();

if (num != null && num.length >= size && size!=0) {
QueueWithMax queue = new QueueWithMax();
for (int i = 0; i < num.length; i++) {
queue.push(num[i]);
if (i >= size) {
queue.pop();
} else if(i == size-1){
}
}
}

return list;
}

public static void main(String[] args) {
Solution sou = new Solution();
int[] num = { 2, 3, 4, 2, 6, 2, 5, 1 };
for (int n : sou.maxInWindows(num, 0)) {
System.out.print(n + " ");
}
}
}``````

# 思路二

``````import java.util.*;

public class Solution {
public ArrayList<Integer> maxInWindows(int[] num, int size) {
ArrayList<Integer> list = new ArrayList<>();

if (num != null && num.length >= size && size > 0) {
for (int i = 0; i < size; i++) {
while (!dq.isEmpty() && num[dq.getLast()] < num[i]) {
dq.removeLast();
}
}
for (int i = size; i < num.length; i++) {
while (!dq.isEmpty() && num[dq.getLast()] < num[i]) {
dq.removeLast();
}
if (dq.getFirst() < i - size + 1) {
dq.removeFirst();
}
}
}

return list;
}
}``````

### 初雪之音

[剑指offer] 滑动窗口的最大值

07/25
0
0
Nginx 高并发TCP请求Linux系统参数配置

2015/12/28
742
0

2017/11/22
0
0
nginx-网络优化

2017/07/25
0
0
nginx优化篇之Linux 内核参数的优化 （2）

NILYANG
2015/04/16
0
0

Confluence 6 识别慢性能的宏

Page Profiling 给你了有关页面在载入的时候操作缓慢的邪教，你可以将下面的内容添加到调试（debug）级别： Version 3.1 及其后续版本 设置包名字为 com.atlassian.renderer.v2.components.M...

honeymose
11分钟前
0
0
day93-20180920-英语流利阅读-待学习

26分钟前
0
0
maven的pom.xml用解决版本问题

maven管理库依赖，有个好处就是连同库的依赖的全部jar文件一起下载，免去手工添加的麻烦，但同时也带来了同一个jar会被下载了不同版本的问题，好在pom的配置里面允许用<exclusion>来排除一些...

JAVA码猿
50分钟前
1
0
20180920 rzsz传输文件、用户和用户组相关配置文件与管理

2
0
OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单（2018）请戳（这里） 【今日歌曲】 @ 达尔文：分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

42
11