慕课北京大学陈斌老师数据结构与算法python版 学习笔记
个人学习记录,如有错误欢迎指正。持续更新中…
算法分析
大 O O O表示法
基本操作数量函数 T ( n ) T(n) T(n)的精确值不是特别重要,重要的是 T ( n ) T(n) T(n)中起决定性因素的主导部分
数量级函数描述 T ( n ) T(n) T(n)中随着 n n n增大而增加而增加速度最快的主导部分,称作 “大 O O O”表示法,记作 O ( f ( n ) ) O(f(n)) O(f(n)),其中 f ( n ) f(n) f(n)表示 T ( n ) T(n) T(n)中的主导部分
常见的大 O O O数量级函数
f ( n ) f(n) f(n) | 名称 |
---|---|
1 1 1 | 常数 |
l o g ( n ) log(n) log(n) | 对数 |
n n n | 线性 |
n ∗ l o g ( n ) n*log(n) n∗log(n) | 对数线性 |
n 2 n^2 n2 | 平方 |
n 3 n^3 n3 | 立方 |
2 n 2^n 2n | 指数 |
变位词判断
所谓“变位词”就是指两个数之间存在组成字母的重新排列关系。
假设:参与判断的两个词仅由小写字母组成,且长度相同。
逐字检查
思路:
将词1中的字符逐个到词二中检查是否存在,存在就打勾标记。若每个字符都能找到,则两个词是变位词;只有一个字符找不到,就不是变位词。
将词2的对应字符设为None,以此来实现打勾标记。
#逐字检查法
def anagram_solution1(s1, s2):
alist = list(s2) # 将s2转换为字符串形式,方便其实现打勾操作
pos1 = 0
still_ok =