时间复杂度
big O notation
算法的时间复杂度简单来说就是程序执行的次数
就是看for循环
一般来说:
一个for循环的时间复杂度是O(N)
两个for循环嵌套的时间复杂度是\(O(N^2)\),看几层嵌套吧
特别注意,两个for循环并列执行的时间复杂度是O(2N),一般常数项忽略不计,也就是O(N)
还是需要写时间复杂度最低的代码
面试手撕代码4件套
1.和面试官讨论一下代码
2.想出所有的解决方案,同时比较这些代码的空间和时间复杂度
3.找出最优解决方案
4.最后再写
递归的时间复杂度
首先找到递归树
比如拿fib数列进行分析
0112358。。。
F(N)=F(N-1)+F(N-2)
主定理是个啥?
二分法查找:每次一次一半因此时间复杂度是二分法查找的时间复杂度就是log(n)
二叉树的遍历每个节点会访问一次且仅访问一次,因此的时间复杂度是O(N)
归并排序也是nlog(n)
二叉树的前序中序后序遍历的时间复杂度就是O(N)
同理图,节点仅访问一次
深度优先和广度优先都是O(N)
以上的时间复杂度都是O(N)