1. 时间空间复杂度
时间复杂度主要看算法中多次调用或者主要调用的部分,重点看循环、递归等;
空间复杂度:
通常来说,只要算法不涉及到动态分配的空间以及递归、栈所需的空间,空间复杂度通常为0(1)。
2.字符串逆转函数 时间复杂度O(n),空间O(1)
def roundString(S):
begin = 0
end = len(S)-1
ss = list(S)
while begin < end:
#交换begin与end指向的字符,直到两个指针相遇为止。
temp = ss[begin]
ss[begin] = ss[end]
ss[end] = temp
begin += 1
end -= 1
return ''.join(ss)
3. 如何构建一个递增的矩阵,如
[1,2,3,4,5
6,7,8,9,10]
def createM(m,n):
matrix = [[0]*m for i in range(n)] #m列n行
for i in range(n):
for j in range(m):
matrix[i][j] = i*m +j+1
return matrix
4. 字符串匹配的四种主流方法:
暴力匹配法 Rabin-Karp Finite automaton Knuth-Morris-Pratt
O((n-m+1)*m)