Update 0239.滑动窗口最大值.md

This commit is contained in:
程序员Carl
2023-11-04 16:27:32 +08:00
committed by GitHub
parent 1f9f95c0b2
commit 6323296d76

View File

@ -62,13 +62,9 @@ public:
每次窗口移动的时候调用que.pop(滑动窗口中移除元素的数值)que.push(滑动窗口添加元素的数值)然后que.front()就返回我们要的最大值。
这么个队列香不香,要是有现成的这种数据结构是不是更香了!
这么个队列香不香,要是有现成的这种数据结构是不是更香了!
**可惜了,没有! 我们需要自己实现这么个队列。**
> 其实有这种数据结构的在C++中可以使用可以使用multiset这种数据结构作为单调队列
> + 多重集合(`multiset`) 用以有序地存储元素的容器。允许存在相等的元素。
>
> 在遍历原数组的时候只需要把窗口的头元素加入到multiset中然后把窗口的尾元素删除即可。因为multiset是有序的并且提供了*rbegin(),可以直接获取窗口最大值。
其实在C++中,可以使用 multiset 来模拟这个过程文末提供这个解法仅针对C++,以下讲解我们还是靠自己实现这个单调队列。
然后再分析一下,队列里的元素一定是要排序的,而且要最大值放在出队口,要不然怎么知道最大值呢。
@ -845,6 +841,10 @@ impl Solution {
### C++
使用multiset作为单调队列
多重集合(`multiset`) 用以有序地存储元素的容器。允许存在相等的元素。
在遍历原数组的时候只需要把窗口的头元素加入到multiset中然后把窗口的尾元素删除即可。因为multiset是有序的并且提供了*rbegin(),可以直接获取窗口最大值。
```cpp
class Solution {
public: