一、使用方法
1、创建一个栈(java中有Stack包)
Stack< 存储的数据类型> Stack =new Stack<>();
2、添加元素
Stack.push(1);加入值为1的一个元素
Stack.push(2);加入值为2的一个元素
Stack.push(3);加入值为3的一个元素
3、获取栈顶的元素
int temp1= Stack.peek();拿到了3
4、删除并获取即将出栈的元素
int temp2=Stack.pop;得到3,且栈里3已经不在了
5、判断队列是否为空
boolen a=Stack.isEmpty;
6、队列长度
Stack.size;
7、遍历
whlie(!Stack.isEmpty()){
int t=Stack.pop();
sout(t);
}
二、例题
class Solution {
public boolean isValid(String s) {
int n = s.length();
if (n % 2 == 1) {
return false;
}
Map<Character, Character> pairs = new HashMap<Character, Character>() {{<br /> put(')', '(');<br /> put(']', '[');<br /> put('}', '{');<br /> }};<br /> Deque<Character> stack = new LinkedList<Character>();<br /> for (int i = 0; i < n; i++) {<br /> char ch = s.charAt(i);<br /> if (pairs.containsKey(ch)) {<br /> if (stack.isEmpty() || stack.peek() != pairs.get(ch)) {<br /> return false;<br /> }<br /> stack.pop();<br /> } else {<br /> stack.push(ch);<br /> }<br /> }<br /> return stack.isEmpty();<br /> }<br />}<br />力扣,下一个更大元素<br />class Solution {<br /> public int[] nextGreaterElement(int[] nums1, int[] nums2) {<br /> int length1=nums1.length;<br /> int length2=nums2.length;<br /> Stack<Integer> stack=new Stack<>();<br /> Map<Integer,Integer> map=new HashMap<>();<br />** for(int i=0;i<length2;i++){**<br />** while(!stack.isEmpty()&&stack.peek()<nums2[i]){**<br />**//建立hashmap的映射**<br />** map.put(stack.pop(),nums2[i]);**<br />** }**<br />** stack.push(nums2[i]);**<br />** }**<br /> int []res=new int[length1];<br /> for(int i=0;i<length1;i++){<br /> res[i]=map.getOrDefault(nums1[i],-1);<br /> } <br /> return res; <br />}<br />}
