mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
@ -215,7 +215,7 @@ next数组就可以是前缀表,但是很多实现都是把前缀表统一减
|
|||||||
|
|
||||||
其实**这并不涉及到KMP的原理,而是具体实现,next数组即可以就是前缀表,也可以是前缀表统一减一(右移一位,初始位置为-1)。**
|
其实**这并不涉及到KMP的原理,而是具体实现,next数组即可以就是前缀表,也可以是前缀表统一减一(右移一位,初始位置为-1)。**
|
||||||
|
|
||||||
后面我会提供两种不同的实现代码,大家就明白了了。
|
后面我会提供两种不同的实现代码,大家就明白了。
|
||||||
|
|
||||||
# 使用next数组来匹配
|
# 使用next数组来匹配
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ public:
|
|||||||
|
|
||||||
当前列雨水面积:min(左边柱子的最高高度,记录右边柱子的最高高度) - 当前柱子高度。
|
当前列雨水面积:min(左边柱子的最高高度,记录右边柱子的最高高度) - 当前柱子高度。
|
||||||
|
|
||||||
为了的到两边的最高高度,使用了双指针来遍历,每到一个柱子都向两边遍历一遍,这其实是有重复计算的。我们把每一个位置的左边最高高度记录在一个数组上(maxLeft),右边最高高度记录在一个数组上(maxRight)。这样就避免了重复计算,这就用到了动态规划。
|
为了得到两边的最高高度,使用了双指针来遍历,每到一个柱子都向两边遍历一遍,这其实是有重复计算的。我们把每一个位置的左边最高高度记录在一个数组上(maxLeft),右边最高高度记录在一个数组上(maxRight)。这样就避免了重复计算,这就用到了动态规划。
|
||||||
|
|
||||||
当前位置,左边的最高高度是前一个位置的左边最高高度和本高度的最大值。
|
当前位置,左边的最高高度是前一个位置的左边最高高度和本高度的最大值。
|
||||||
|
|
||||||
@ -204,7 +204,7 @@ public:
|
|||||||
|
|
||||||
2. 使用单调栈内元素的顺序
|
2. 使用单调栈内元素的顺序
|
||||||
|
|
||||||
从大到小还是从小打到呢?
|
从大到小还是从小到大呢?
|
||||||
|
|
||||||
从栈头(元素从栈头弹出)到栈底的顺序应该是从小到大的顺序。
|
从栈头(元素从栈头弹出)到栈底的顺序应该是从小到大的顺序。
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ public:
|
|||||||
|
|
||||||
# 优化
|
# 优化
|
||||||
|
|
||||||
其实这道题目就是用一个队里就够了。
|
其实这道题目就是用一个队列就够了。
|
||||||
|
|
||||||
**一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时在去弹出元素就是栈的顺序了。**
|
**一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时在去弹出元素就是栈的顺序了。**
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user