简介
单调栈实际上也是栈,但他利用了一些巧妙的逻辑,让每次新元素入栈后,栈内元素都保持 有序(单调递增或单调递减),那么,这个逻辑是什么,其实很简单,以栈底-栈顶单调递增 为例,每次新元素入栈时,让栈内元素与新元素判断,比新元素大的栈内元素出栈即可。
单调栈实际上也是栈,但他利用了一些巧妙的逻辑,让每次新元素入栈后,栈内元素都保持 有序(单调递增或单调递减),那么,这个逻辑是什么,其实很简单,以栈底-栈顶单调递增 为例,每次新元素入栈时,让栈内元素与新元素判断,比新元素大的栈内元素出栈即可。
1 | $ mkdir learngit//创建目录 |
在Windows中当输入完txt内容后,按esc加:wq退出输入模式
动态规划的思想是把问题划分为多个子问题,但子问题常常并不是互相独立的,当前子问题的解可看作是前面多个阶段的完整总结,所以它需要在子问题求解过程中进行多次判断与选择,与前面的问题相比,它现阶段一定要构成一种最优的结构,它满足最优化原理, 最优化原理:一个最优化策略具有这样的性质,不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略。同时,这样的最优策略是针对有已作出决策的总结,对后来的决策没有直接影响,只能借用目前最优策略的状态数据。这也被称之为无后效性。
递归,在计算机科学中是指一种通过重复把问题分解为同类的子问题而解决问题的方法,通俗来讲,递归表现为函数调用函数本身。在知乎上有一个比喻递归非常形象的例子。 “递归最恰当的比喻,就是查词典。我们使用的词典,本身就是递归,为了解释一个词,需要使用更多的词。当你查一个词,发现这个词的解释中某个词仍然不懂,于是你开始查这第二个词,可惜,第二个词里仍然有不懂的词,于是查第三个词,这样查下去,直到有一个词的解释是你完全能看懂的,那么递归走到了尽头,然后你开始后退,逐个明白之前查过的每一个词,最终,你明白了最开始那个词的意思。”.