LeetCode-栈
1047. 删除字符串中的所有相邻重复项
public String removeDuplicates(String S) { if(S == null || S.length() == 0){ return ""; } /** * 利用栈就可以完成,如果两个字母一样就弹出栈 * 时间复杂度O(N) 空间复杂度O(N) */ Stack<Character> stack = new Stack<>(); char strArr[] = S.toCharArray(); for (int i = 0; i < strArr.length; i++){ if (stack.isEmpty() || strArr[i]!=stack.peek()){ stack.push(strArr[i]); } else{ stack.pop(); } } StringBuffer stringBuffer = new StringBuffer(); for (Character character : stack){ stringBuffer.append(character); } return stringBuffer.toString(); }
739. 每日温度
public class LeetCode739 { /** * 在数组里面,找比当前元素大的数字位置距离,比如[73,74]应该输出1 * 使用递减栈 */ public int[] dailyTemperatures(int[] T) { int len = T.length; Stack<Integer> stack = new Stack<>(); int[]res = new int[len]; for (int i = 0; i < T.length; i ++){ while (!stack.isEmpty() && T[i] > T[stack.peek()]){ int t = stack.peek(); stack.pop(); res[t] = i-t; } stack.push(i); } return res; }
1047. 删除字符串中的所有相邻重复项
public String removeDuplicates(String S){if(S == null || S.length()==0){return"";}/**
* 利用栈就可以完成,如果两个字母一样就弹出栈
* 时间复杂度O(N) 空间复杂度O(N)
*/
Stack<Character> stack =newStack<>();char strArr[]= S.toCharArray();for(int i =0; i < strArr.length; i++){if(stack.isEmpty()|| strArr[i]!=stack.peek()){
stack.push(strArr[i]);}else{
stack.pop();}}
StringBuffer stringBuffer =newStringBuffer();for(Character character : stack){
stringBuffer.append(character);}return stringBuffer.toString();}
739. 每日温度
/**
* 在数组里面,找比当前元素大的数字位置距离,比如[73,74]应该输出1
* 使用递减栈
* 代码参考:https://www.cnblogs.com/grandyang/p/8097513.html
*/publicint[]dailyTemperatures(int[] T){int len = T.length;
Stack<Integer> stack =newStack<>();int[]res =newint[len];for(int i =0; i < T.length; i ++){while(!stack.isEmpty()&& T[i]> T[stack.peek()]){int t = stack.peek();
stack.pop();
res[t]= i-t;}
stack.push(i);}return res;}
浙公网安备 33010602011771号