leetcode刷题中关于时间复杂度和空间复杂度的计算

时间复杂度

leetcode刷题中关于时间复杂度和空间复杂度的计算_第1张图片

1)O(1)leetcode刷题中关于时间复杂度和空间复杂度的计算_第2张图片

 2)Olon_2_n

leetcode刷题中关于时间复杂度和空间复杂度的计算_第3张图片

3)O(n)

leetcode刷题中关于时间复杂度和空间复杂度的计算_第4张图片

4)O(m + n)

一个循环执行m次,另一个循环执行n次

public void find(m,n){
    for(int i = 0;i < m;i++){
        total += i;
    }
    for(int j = 0;j < n;j++){
        total += j;
    }
}

5)O(n^2)

leetcode刷题中关于时间复杂度和空间复杂度的计算_第5张图片

6)O(nlog_2_n)

外层循环执行m次,内层循环执行n次

public void find(m,n){
    for(int i = 0;i < m;i++){
        total += i;
        for(int j = 0;j < n;j++){
            total += j;
        }
    }
}

空间复杂度

1)O(1)

变量等于常量时

total = 5;

2)O(n)

变量是array,hashset,list之类的可以存储很多数据的变量时,传入的形参可以改变变量的大小,那么它的空间复杂度会很大

public ovid find(n){
    Set set = new HashSet();
    for(int i = 0;i < n;i++){
        set.add(i);
    }
}

特殊情况:递归时,哪怕没有任何的变量开辟,空间复杂度也是O(N),因为递归调用之前的操作

你可能感兴趣的:(leetcode,算法)