时间复杂度:
定义:
时间复杂度其实不指一个程序运行的快慢(不同机器的性能不一样)所以不可
比;
时间复杂度是指一个算法运行次数;
计算规则:
1.只保留最高项(把N当无穷大,其他的倍数啥的都可以忽略)记作 O()
2.若只有常熟项,则时间复杂度为O(1)
技巧:面对稍微有一点复杂的程序,真正的高手在算时间复杂度时。是不会死磕
表面代码的,而是看代码的运行逻辑和运行过程。
递归的时间复杂度:
递归的时间复杂度其实就是子函数调用的次数
1.关于二叉树的递归:
遍历所有节点就是O(N);
从树的深度入手就是O(logN)
有关于时间复杂度常见的题目:8页
空间复杂度不重要:
定义:
空间复杂度不研究代码占用了多少byte位(太难算了没有意义)
而是研究 变量的个数+动态内存开辟的空间
特别的:
递归算法的空间复杂度:
递归的栈帧深度,因为递归函数要建立栈帧递归需
要消耗空间。
几个空间复杂度的题目:10页
注意:
这种的复杂度就是O(1),他只使用了一个固定大小的变量