题目

232.用栈实现队列

class MyQueue {

    private Stack<Integer> in = new Stack<>();
private Stack<Integer> out = new Stack<>(); public void push(int x) {
in.push(x);
} public int pop() {
in2out();
return out.pop();
} public int peek() {
in2out();
return out.peek();
} private void in2out() {
if (out.isEmpty()) {
while (!in.isEmpty()) {
out.push(in.pop());
}
}
} public boolean empty() {
return in.isEmpty() && out.isEmpty();
}
}

225.用队列实现栈

class MyStack {

    private Queue<Integer> queue;

    public MyStack() {
queue = new LinkedList<>();
} public void push(int x) {
queue.add(x);
int cnt = queue.size();
while (cnt-- > 1) {
queue.add(queue.poll());
}
} public int pop() {
return queue.remove();
} public int top() {
return queue.peek();
} public boolean empty() {
return queue.isEmpty();
}
}

155.最小栈

class MinStack {

    private Stack<Integer> dataStack;
private Stack<Integer> minStack;
private int min; public MinStack() {
dataStack = new Stack<>();
minStack = new Stack<>();
min = Integer.MAX_VALUE;
} public void push(int x) {
dataStack.add(x);
min = Math.min(min, x);
minStack.add(min);
} public void pop() {
dataStack.pop();
minStack.pop();
min = minStack.isEmpty() ? Integer.MAX_VALUE : minStack.peek();
} public int top() {
return dataStack.peek();
} public int getMin() {
return minStack.peek();
}
}

20.有效地括号

class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
if (c == '(' || c == '{' || c == '[') {
stack.push(c);
} else {
if (stack.isEmpty()) {
return false;
}
char cStack = stack.pop();
boolean b1 = c == ')' && cStack != '(';
boolean b2 = c == ']' && cStack != '[';
boolean b3 = c == '}' && cStack != '{';
if (b1 || b2 || b3) {
return false;
}
}
}
return stack.isEmpty();
} }

739.每日温度

求数组中元素与下一个比它大元素之间的距离

class Solution {
public int[] dailyTemperatures(int[] temperatures) {
int n = temperatures.length;
int[] dist = new int[n];
Stack<Integer> indexs = new Stack<>();
for (int curIndex = 0; curIndex < n; curIndex++) {
while (!indexs.isEmpty() && temperatures[curIndex] > temperatures[indexs.peek()]) {
int preIndex = indexs.pop();
dist[preIndex] = curIndex - preIndex;
}
indexs.add(curIndex);
}
return dist;
}
}

503.下一个更大的元素II

class Solution {
public int[] nextGreaterElements(int[] nums) {
int n = nums.length;
int[] next = new int[n];
Arrays.fill(next, -1);
Stack<Integer> pre = new Stack<>();
for (int i = 0; i < n * 2; i++) {
int num = nums[i % n];
while (!pre.isEmpty() && nums[pre.peek()] < num) {
next[pre.pop()] = num;
}
if (i < n){
pre.push(i);
}
}
return next;
}
}

最新文章

  1. Hololens 硬件细节 Hardware Detail
  2. JAVA_javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name
  3. 伸缩盒子模型,旧的伸缩盒子模型。浏览器内核、css继承属性
  4. 设计winform自带动态加载工具按钮和实现热键响应
  5. oracle中用户删除不了,ORA-01940提示 “无法删除当前已连接用户”
  6. javascript 对象数组排序
  7. .net对各表的操作详细到字段的更改记录的日志
  8. Maven那点事儿(Eclipse版)
  9. MySQL创建/删除/清空表,添加/删除字段
  10. jquery事件之event.target用法详解
  11. ubuntu jdk环境变量配置
  12. libmad编译
  13. Linux中使用京东代码库JDCode创建私有Git仓库
  14. (一)jdk8学习心得之遍历
  15. 2019-04-15 python深浅复制
  16. JMX的l理解
  17. git批量修改已经提交的commit的姓名和邮箱
  18. 倒计时相关函数 php
  19. 触屏设备上的多点触碰检测C++代码实现
  20. Qt学习之对话框与主窗口的创建

热门文章

  1. sqlite 显示表内容时乱码,无法正常显示汉字,
  2. IDEA中搭建项目环境
  3. seaborn线性关系数据可视化:时间线图|热图|结构化图表可视化
  4. 《Python Web开发实战》|百度网盘免费下载|Python Web开发
  5. PHP 是什么?简介下
  6. Python List remove()方法
  7. 7.1 NOI模拟赛 计数问题 dp
  8. 服务消费者(RestTemplate+Ribbon+feign)
  9. Error: Cannot perform an interactive login from a non TTY device
  10. 微信小程序--家庭记账小账本(四)