package
0.0.0-20241220224003-b7cf03a90b2b
Repository: https://github.com/szhou12/leetcode-go.git
Documentation: pkg.go.dev
# README
1047. Remove All Adjacent Duplicates In String
Solution idea
Stack
-
用 Stack 解决 消消乐类型问题
-
机制:
- loop 每个元素,如果栈空或者栈顶元素与 当前元素 不同,则当前元素入栈
- 如果与栈顶元素相同,pop掉 栈顶元素
- 注意:这个机制只能消掉 adjacent two elements, 如果adjacent elements多于2个就会出错
Time complexity = $O(n)$
- 拓展:如何消掉adjacent elements多于2个?
- 栈内元素: 定义成一个struct{val: 元素本身, counter: 已push进栈的次数}
- loop 每个元素:
- 如果栈空: push 当前元素{val, counter=1}
- 如果栈顶元素与当前元素相同: 栈顶元素counter+1
- 如果栈顶元素与当前元素不同:
- 如果栈顶元素counter = 1, push当前元素{val, counter=1}
- 如果栈顶元素counter > 1, pop栈顶元素 直到: 1. 栈空; 2. 栈顶元素与当前元素相同; 3. 栈顶元素与当前元素不同 但 counter=1