一、时间复杂度
logN的时间复杂度的来源:
while(i<num) i = i * 2;
//i*2*2*2*2*2......一共有log2N个2相乘,log2(8) = 3,所以要乘到8相当于有3个即log2(8)个2相乘。
乘就是嵌套
二、空间复杂度
int类型是4个字节32位
一个变量的空间复杂度是1,数组等容器的空间复杂度是n。
要注意!递归会用到递归栈stack来保存信息,这是空间复杂度(即使没有用到变量)也是n
常用的空间复杂度还有n^2
logN和NlogN的空间复杂度不常用。
三、折中
时间和空间只能有一个达到最好,面试的时候要和面试官说清楚。
最好的情况是分别把时间最好和空间最好的算法都告诉面试官。
工作的时候通常是用空间换时间。