优化排版,把复杂度标记为公式

This commit is contained in:
bqlin
2021-12-10 20:07:53 +08:00
parent 973582cd7e
commit 90638af21a
96 changed files with 462 additions and 449 deletions

View File

@@ -36,7 +36,7 @@
难点是如何求一个区间里的最大值呢? (这好像是废话),暴力一下不就得了。
暴力方法遍历一遍的过程中每次从窗口中在找到最大的数值这样很明显是O(n * k)的算法。
暴力方法,遍历一遍的过程中每次从窗口中在找到最大的数值,这样很明显是$O(n × k)$的算法。
有的同学可能会想用一个大顶堆优先级队列来存放这个窗口里的k个数字这样就可以知道最大的最大值是多少了 **但是问题是这个窗口是移动的,而大顶堆每次只能弹出最大值,我们无法移除其他数值,这样就造成大顶堆维护的不是滑动窗口里面的数值了。所以不能用大顶堆。**
@@ -183,13 +183,13 @@ public:
};
```
在来看一下时间复杂度,使用单调队列的时间复杂度是 O(n)。
在来看一下时间复杂度,使用单调队列的时间复杂度是 $O(n)$
有的同学可能想了,在队列中 push元素的过程中还有pop操作呢感觉不是纯粹的O(n)。
有的同学可能想了,在队列中 push元素的过程中还有pop操作呢感觉不是纯粹的$O(n)$
其实大家可以自己观察一下单调队列的实现nums 中的每个元素最多也就被 push_back 和 pop_back 各一次,没有任何多余操作,所以整体的复杂度还是 O(n)。
其实大家可以自己观察一下单调队列的实现nums 中的每个元素最多也就被 push_back 和 pop_back 各一次,没有任何多余操作,所以整体的复杂度还是 $O(n)$
空间复杂度因为我们定义一个辅助队列所以是O(k)。
空间复杂度因为我们定义一个辅助队列,所以是$O(k)$
# 扩展