优化排版,把复杂度标记为公式
This commit is contained in:
@@ -67,8 +67,8 @@
|
||||
|
||||
可以使用暴力解法,通过这道题目,如果追求更优的算法,建议试一试用二分法,来解决这道题目
|
||||
|
||||
暴力解法时间复杂度:O(n)
|
||||
二分法时间复杂度:O(logn)
|
||||
* 暴力解法时间复杂度:$O(n)$
|
||||
* 二分法时间复杂度:$O(\log n)$
|
||||
|
||||
在这道题目中我们讲到了**循环不变量原则**,只有在循环中坚持对区间的定义,才能清楚的把握循环中的各种细节。
|
||||
|
||||
@@ -81,8 +81,8 @@
|
||||
|
||||
双指针法(快慢指针法):**通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。**
|
||||
|
||||
暴力解法时间复杂度:O(n^2)
|
||||
双指针时间复杂度:O(n)
|
||||
* 暴力解法时间复杂度:$O(n^2)$
|
||||
* 双指针时间复杂度:$O(n)$
|
||||
|
||||
这道题目迷惑了不少同学,纠结于数组中的元素为什么不能删除,主要是因为以下两点:
|
||||
|
||||
@@ -97,12 +97,12 @@
|
||||
|
||||
本题介绍了数组操作中的另一个重要思想:滑动窗口。
|
||||
|
||||
暴力解法时间复杂度:O(n^2)
|
||||
滑动窗口时间复杂度:O(n)
|
||||
* 暴力解法时间复杂度:$O(n^2)$
|
||||
* 滑动窗口时间复杂度:$O(n)$
|
||||
|
||||
本题中,主要要理解滑动窗口如何移动 窗口起始位置,达到动态更新窗口大小的,从而得出长度最小的符合条件的长度。
|
||||
|
||||
**滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将O(n^2)的暴力解法降为O(n)。**
|
||||
**滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将$O(n^2)$的暴力解法降为$O(n)$。**
|
||||
|
||||
如果没有接触过这一类的方法,很难想到类似的解题思路,滑动窗口方法还是很巧妙的。
|
||||
|
||||
@@ -129,19 +129,5 @@
|
||||
最后,大家周末愉快!
|
||||
|
||||
|
||||
## 其他语言版本
|
||||
|
||||
|
||||
Java:
|
||||
|
||||
|
||||
Python:
|
||||
|
||||
|
||||
Go:
|
||||
|
||||
|
||||
|
||||
|
||||
-----------------------
|
||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||
|
||||
Reference in New Issue
Block a user