手把手带你刷力扣(1)-时间复杂度和空间复杂度
时间复杂度:算法的执行效率、算法的执行时间和输入值的关系
需要关注的是算法中的for循环和while循环,如均没有,时间复杂度为O(1)。
下面是常见时间复杂度的简单案例:
O(1):
def O1(num):
i = num
j = num * 2
return i + j
O(logN):
def OlogN(num):
i = 1
while (i < num):
i = i * 2
return i
O(N):
def ON(num):
total = 0
for i in range(num):
total += i
return total
O(M+N):
def OMN(num1,num2):
toal = 0;
for i in range(num1):
total += i
for j in range(num2):
total += j
return total
O(NlogN):
def ONLogN(num):
total = 0
j = 1
for i in range(num):
while(j < num):
total += i + j
j =j * 2
return total
O(N2):
def ON2(num):
total = 0
for i in range(num):
for j in range(num):
total += i + j
return total
对比:
O(1) < O(logN)(二分查找) < O(N) < O(NlogN) (排序)< O(N2) < O(2N) < O(N!)
空间复杂度:算法存储空间与输入值之间的关系
简单案例:
O(1):
def test1(num):
total = 0
for i in range(num):
total += i
return total
O(N):
def test2(num):
array = []
for num in nums:
array.append(num)
return array
对比:
O(1) < O(N) < O(N2)