leetcode刷题记录——栈和队列
2024-09-07 20:25:49
题目
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;
}
}
最新文章
- Hololens 硬件细节 Hardware Detail
- JAVA_javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name
- 伸缩盒子模型,旧的伸缩盒子模型。浏览器内核、css继承属性
- 设计winform自带动态加载工具按钮和实现热键响应
- oracle中用户删除不了,ORA-01940提示 “无法删除当前已连接用户”
- javascript 对象数组排序
- .net对各表的操作详细到字段的更改记录的日志
- Maven那点事儿(Eclipse版)
- MySQL创建/删除/清空表,添加/删除字段
- jquery事件之event.target用法详解
- ubuntu jdk环境变量配置
- libmad编译
- Linux中使用京东代码库JDCode创建私有Git仓库
- (一)jdk8学习心得之遍历
- 2019-04-15 python深浅复制
- JMX的l理解
- git批量修改已经提交的commit的姓名和邮箱
- 倒计时相关函数 php
- 触屏设备上的多点触碰检测C++代码实现
- Qt学习之对话框与主窗口的创建
热门文章
- sqlite 显示表内容时乱码,无法正常显示汉字,
- IDEA中搭建项目环境
- seaborn线性关系数据可视化:时间线图|热图|结构化图表可视化
- 《Python Web开发实战》|百度网盘免费下载|Python Web开发
- PHP 是什么?简介下
- Python List remove()方法
- 7.1 NOI模拟赛 计数问题 dp
- 服务消费者(RestTemplate+Ribbon+feign)
- Error: Cannot perform an interactive login from a non TTY device
- 微信小程序--家庭记账小账本(四)