搞本子书,搞个B站视频,登录LeetCode
我买的清华大学出版的数据结构(Python版)
B站有个清华博士讲解python版数据结构还不错,就是没字幕
1、时间复杂度,空间复杂度
也不用死记,主要是要知道复杂度是怎么算出来的,以后刷LeetCode大有用处
2、递归(汉诺塔)
def hanoi(n,a,b,c):
if n>0:
hanoi(n-1,a,c,b)
print('move from %s to %s'%(a,c))
hanoi(n-1,b,a,c)
hanoi(3,'A','B','C')
我个人理解就是调用很多次def的函数,感觉有点抽象,后面多刷刷LeetCode,就有种只可意会不可言传的感觉(其实就是理解不通透。。。)
3、查找(顺序,二分)
顺序:用for循环加if条件判断
a=[1,2,3,4,5,6,7,8,9,10]
b=5
def pp(a,b):
for i in range(len(a)):
if a[i]==b:
return i
return -1
print(pp(a,b))
二分:比较重要,过程重要,思想也重要
a=[1,2,3,4,5,6,7,8,9,10]
b=5
def pp(a,b):
if len(a)>0:
low=0
high=len(a)-1
while low<=high:
mid=(low+high)//2
if a[mid]==b:
return mid
elif a[mid]<b:
low=mid+1
else:
high=mid-1
return -1
print(pp(a,3))