栈的用处,当遍历的时候,后续元素的操作根据前面元素的状态而不同时, 即我们需要存储前面的元素来判断对后面元素的操作, 也可以根据后面的元素状态对前面的元素进行二次操作。
比如删除最外层的括号这一题,
遇到左括号,我们把它入栈,遇到之后的括号, 我们需要根据它的状态而对之前存储的元素进行操作,比如我们遇到了右括号,那么我们就得到一个删除栈顶的左括号。
可以看出,在这里,我们的栈中保存的都是左括号,而对于原语来说最重要的莫过于第一个左括号的位置,我们从第一个左括号之后遍历,而第一个左括号的寿命直到我们遍历完一个完整的原语。所以之前元素的状态很重要,这时我们就需要栈。
算法思想: “ 不存” 比 “存了再删” 更高级。
遍历最好做一次,不用先把有效数字加工好存放好,再遍历,多一次遍历的时间也是没有必要的。
不要放过题目给的信息,有些信息有助于想出更简单的函数。
Hashmap ; 当遇到一个集合与另一个集合有多次比较的功能情况,建议使用 hashmap 。当然这个比较最终都要能化为一一对应的关系。
来源:CSDN
作者:芒骁
链接:https://blog.csdn.net/qq_44587855/article/details/103985450