LeetCode:每日温度【739】之 JAVA 堆栈类(Stack)的使用

编程入门 行业动态 更新时间:2024-10-25 21:15:27

  堆栈是一种 “后进先出” (LIFO) 的数据结构, 只能在一端进行插入(称为 “压栈” ) 或删除 (称为“出栈”)数据的操作,Stack堆栈添加移除元素的原则是后进先出

  Stack类的主要方法是:push(), peek(), pop(), empty(), search()。

push() - 将元素推送到堆栈顶部(在栈顶添加元素)peek() - 返回栈顶的元素,但是不删除栈顶元素pop() - 和peek()一样返回栈顶元素,但是要将栈顶元素移除掉 即移除并返回堆栈的顶部元素 如果我们在调用堆栈为空时调用pop(),则抛出’EmptyStackException’异常 empty() - 检查栈是否为空 如果堆栈顶部没有任何内容,则返回true。否则,返回false。 earch() - 返回元素在堆栈中的位置

基础篇

Stack stack = new Stack();String s1 = "element 1";
String s2 = "element 2";stack.push(s1);
stack.push(s2);

  现在栈中有两个元素,栈顶应该是element 2,我们可以通过peek方法看栈顶的元素:

System.out.println(stack.peek());

  输出:element 2

  要看element 1的位置需要使用search方法:

int pos = stack.search("element 1");
System.out.println(pos);

  上面代码将输出:2

  要移除栈顶的元素应该用pop()方法:

System.out.println(stack.pop());
System.out.println(stack.pop());

  在上一步中栈中的两个元素都被pop了,现在我们看下empty()方法是否返回true

System.out.println(stack.empty());

  输出:true

进阶篇

  LeetCode:每日温度【739】

  题目描述:根据每日气温列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。

class Solution{public int[] dailyTemperatures(int[] T) {// 单调栈 里面的数 非递增排序 Stack<Integer> stack = new Stack<>();int[] res = new int[T.length];for(int i=res.length-1; i>=0; i--) {// 当前元素比栈顶元素大 出栈 重新调整栈直至满足要求while(!stack.empty() && T[i]>=T[stack.peek()]) {stack.pop();}// 栈为空 即后面没有比当前天温度高的// 不为空 栈顶元素对应的下标减去当前下标即为经过几天后温度比当前天温度高res[i] = stack.empty()?0:stack.peek()-i;// 当前元素进栈stack.push(i);}return res;}
}

更多推荐

堆栈,温度,LeetCode,Stack,JAVA

本文发布于:2023-05-20 22:53:48,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/156743.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:堆栈   温度   LeetCode   Stack   JAVA

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!