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