前言
随着行业的发展,编程能力逐渐成为软件测试从业人员的一项基本能力。因此在笔试和面试中常常会有一定量的编码题,主要考察以下几点。
基本编码能力及思维逻辑
基本数据结构(顺序表、链表、队列、栈、二叉树)
基本算法(排序、查找、递归)及时间复杂度
除基本算法之外,笔试面试中经常会考察以下三种思想:
哈希
递归
分治
哈希
哈希即Python中的映射类型,字典和集合,键值唯一,查找效率高,序列(列表、元祖、字符串)的元素查找时间复杂度是O(n),而字典和集合的查找只需要O(1)。
因此哈希在列表问题中主要有两种作用:
去重
优化查找效率
例题1:列表去重#
列表去重在不考虑顺序的情况下可以直接使用set()转换(转换后会自动排序),需要保持顺序可以使用字典构建的fromkeys()方法,利用字典键值的唯一性去重。
不考虑顺序:
l = [2,1,2,3,4,5,6,6,5,4,3,2,1]
result = list(set(l))
print(result)
运行结果:
[1, 2, 3, 4, 5, 6]
考虑顺序:
l = [2,1,2,3,4,5,6,6,5,4,3,2,1]
result = list({}.fromkeys(l).keys())
print(result)
运行结果:
[2, 1, 3, 4, 5, 6]
例题2&