This commit is contained in:
programmercarl
2022-04-12 22:23:28 +08:00
parent e790032c95
commit 804d7e0171
30 changed files with 111 additions and 123 deletions

View File

@@ -44,7 +44,7 @@ a->right = NULL;
在介绍前中后序遍历的时候有递归和迭代非递归还有一种牛逼的遍历方式morris遍历。
morris遍历是二叉树遍历算法的超强进阶算法morris遍历可以将非递归遍历中的空间复杂度降为$O(1)$,感兴趣大家就去查一查学习学习,比较小众,面试几乎不会考。我其实也没有研究过,就不做过多介绍了。
morris遍历是二叉树遍历算法的超强进阶算法morris遍历可以将非递归遍历中的空间复杂度降为O(1),感兴趣大家就去查一查学习学习,比较小众,面试几乎不会考。我其实也没有研究过,就不做过多介绍了。
## 周二

View File

@@ -41,7 +41,7 @@
一些录友不清楚[贪心算法:分发饼干](https://programmercarl.com/0455.分发饼干.html)中时间复杂度是怎么来的?
就是快排$O(n\log n)$,遍历$O(n)$,加一起就是还是$O(n\log n)$
就是快排O(nlog n)遍历O(n)加一起就是还是O(nlogn)。
## 周三

View File

@@ -70,9 +70,9 @@
# 周三
在[$O(n)$的算法居然超时了此时的n究竟是多大](https://programmercarl.com/前序/On的算法居然超时了此时的n究竟是多大.html)中介绍了大家在leetcode上提交代码经常遇到的一个问题-超时!
在[O(n)的算法居然超时了此时的n究竟是多大](https://programmercarl.com/前序/On的算法居然超时了此时的n究竟是多大.html)中介绍了大家在leetcode上提交代码经常遇到的一个问题-超时!
估计很多录友知道算法超时了,但没有注意过 $O(n)$的算法如果1s内出结果这个n究竟是多大
估计很多录友知道算法超时了,但没有注意过 O(n)的算法如果1s内出结果这个n究竟是多大
文中从计算机硬件出发,分析计算机的计算性能,然后亲自做实验,整理出数据如下:
@@ -95,7 +95,7 @@
文中给出了四个版本的代码实现,并逐一分析了其时间复杂度。
此时大家就会发现,同一道题目,同样使用递归算法,有的同学会写出了$O(n)$的代码,有的同学就写出了$O(\log n)$的代码。
此时大家就会发现同一道题目同样使用递归算法有的同学会写出了O(n)的代码,有的同学就写出了$O(\log n)$的代码。
其本质是要对递归的时间复杂度有清晰的认识,才能运用递归来有效的解决问题!

View File

@@ -8,7 +8,7 @@
在[贪心算法:加油站](https://programmercarl.com/0134.加油站.html)中给出每一个加油站的汽油和开到这个加油站的消耗,问汽车能不能开一圈。
这道题目咋眼一看,感觉是一道模拟题,模拟一下汽车从每一个节点出发看看能不能开一圈,时间复杂度是$O(n^2)$
这道题目咋眼一看感觉是一道模拟题模拟一下汽车从每一个节点出发看看能不能开一圈时间复杂度是O(n^2)。
即使用模拟这种情况,也挺考察代码技巧的。

View File

@@ -211,8 +211,8 @@ public:
};
```
* 时间复杂度:$O(n^2)$
* 空间复杂度:$O(1)$
* 时间复杂度O(n^2)
* 空间复杂度O(1)
贪心解法代码如下:
@@ -233,8 +233,8 @@ public:
};
```
* 时间复杂度:$O(n)$
* 空间复杂度:$O(1)$
* 时间复杂度O(n)
* 空间复杂度O(1)
动规解法,版本一,代码如下:
@@ -256,8 +256,8 @@ public:
};
```
* 时间复杂度:$O(n)$
* 空间复杂度:$O(n)$
* 时间复杂度O(n)
* 空间复杂度O(n)
从递推公式可以看出dp[i]只是依赖于dp[i - 1]的状态。
@@ -282,8 +282,8 @@ public:
};
```
* 时间复杂度:$O(n)$
* 空间复杂度:$O(1)$
* 时间复杂度O(n)
* 空间复杂度O(1)
建议先写出版本一,然后在版本一的基础上优化成版本二,而不是直接就写出版本二。