[数据结构与算法] 数据结构与算法python版(二)算法分析

本文介绍了大O表示法用于描述算法的时间复杂度,并探讨了变位词判断的不同方法,包括逐字检查、排序比较、暴力法和计数比较。此外,还讨论了Python中List和Dict数据类型的操作性能,以及一些实践练习,如A/B问题、打印实心矩形和找最小数等。
摘要由CSDN通过智能技术生成


个人学习记录,如有错误欢迎指正。持续更新中…

算法分析

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) nlog(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 =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值