数据结构与算法
qq_32835305
这个作者很懒,什么都没留下…
展开
-
单向链表python实现,增删改查+链表反转
单向链表,实现了增删改查以及链表反转,# 实现 is_empty / clear / append / prepend / search / insert /show_all/reverse/locate/del_posiclass Node: def __init__(self, val): self.val = val self.nextp = N...原创 2018-12-16 21:33:13 · 268 阅读 · 0 评论 -
Python常见面试题
# 打印99乘法口诀表def table99(): for i in range(1, 10): for j in range(1, i + 1): print('{}*{}={}'.format(j, i, i * j), end='\t') print()# 打印菱形def print_diamond(): fo...原创 2019-02-02 10:11:39 · 163 阅读 · 1 评论 -
图论相关算法:Dijkstra、Kruskal、Prim
'''所有顶点之间都有边的图称为完全图n个顶点的无向图有n(n-1)/2条边,n个顶点的有向图有n(n-1)条边一个顶点的度数表示他的边的个数所有顶点的度数除以二分之一就是边数。如果是有向图,那么还分出度和入度。有根图表示存在一个顶点 到其他所有定点都有路径。根顶点不一定只有一个。连通表示两个顶点之间存在路径。连通无向图:任意两个顶点之间连通就是连通无向图强连通有向图:对于有向...原创 2019-02-01 20:28:07 · 426 阅读 · 0 评论 -
装饰器实现类型检查
import inspectfrom functools import wrapsdef check(func): @wraps(func) def wrapper(*args,**kwargs): ''' doc of wrapper ''' print('doc is ',wrapper.__doc__) ...原创 2019-01-20 14:42:12 · 171 阅读 · 0 评论 -
python装饰器实现cache
import timeimport datetimedef cache(d={},cache_time=3): def _cache(func): def wrapper(*args,**kwargs): if d.get(args) is None or datetime.datetime.now().timestamp()-d[args][1...原创 2019-01-20 14:39:57 · 331 阅读 · 0 评论 -
剑指offer部分题目(三)
class Node: def __init__(self, val): self.val = val self.left = None self.right = Noneclass BinaryTree: def __init__(self): self.root = None def mk_tree(s...原创 2019-01-20 14:32:45 · 90 阅读 · 0 评论 -
python中多线程同步实现
import threadingimport timedef thread1(): while True: time.sleep(1) print('I love u ')# python 实现线程同步:Event、(R)Lock、semaphore、barricade、condition# Event 使用:e.set() e.clear...原创 2019-01-20 14:27:35 · 791 阅读 · 0 评论 -
二维数组的搜索
'''在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。'''# 首先完成 二分查找def binary_search(array, num): length = len(array) mid = length // 2 ...原创 2019-01-20 14:25:50 · 134 阅读 · 0 评论 -
剑指offer部分题目(二)
class Node: def __init__(self, val): self.val = val self.next = Noneclass Llst: def __init__(self): self.head = None self.end = None def print_l(self): ...原创 2019-01-20 11:50:52 · 116 阅读 · 0 评论 -
回溯法解决N皇后的问题
# 使用回溯法解决N皇后的问题def mk_lst(size): # 生成棋盘 return [[0 for i in range(size)] for j in range(size)]def is_legal_posi(loca, size): # 判断是否合法坐标 x, y = loca[0], loca[1] size -= 1 if 0 &...原创 2019-01-20 11:47:52 · 705 阅读 · 0 评论 -
剑指offer部分题目(一)
# fibonaccidef fib(n): a, b = 0, 1 print(1) for i in range(n - 1): a, b = b, b + a print(b) # 打印第5个数# 跳台阶def jump_recur(n): if n == 1 or n == 0: return 1...原创 2019-01-20 11:45:51 · 202 阅读 · 1 评论 -
二叉树实现+前中后序遍历(递归+非递归实现)
# 前序遍历,中序遍历, 后序遍历class Node(): def __init__(self, val): self.val = val self.left = None self.right = None def judge(self): if not self.is_fulltree(): ...原创 2019-01-20 10:53:33 · 164 阅读 · 1 评论 -
排序(插入、冒泡、选择、归并、快排) + 二分查找 实现
# 排序算法的稳定与否决定于 会不会破坏原先序列里的相对顺序# 排序test = [1, 6, 8, 4, 7, 9, 3]test_rep = [1, 3, 1, 9, 6, 1, 8, 5, 5]print(test)# 冒泡 时间复杂度 n**2 冒泡排序是比较排序,通过比较来排序,是稳定的排序算法# 平均情况O(n2),最好情况O(n),最坏情况O(n2)def bub...原创 2019-01-20 10:05:24 · 188 阅读 · 0 评论 -
Python实现单例模式
单例模式:就是一个类只能实例化一次,只能拥有一个实例。python中类的实例的创建由 new 完成, 实例的初始化由 init 完成。因此单例模式可以通过在new这边进行拦截来实现。class A: def __new__(cls, *args, **kwargs): if not hasattr(cls,'_instance'): setat...原创 2019-02-11 11:58:06 · 221 阅读 · 0 评论