![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
python数据结构算法
python数据结构
大帅不是我
你的坚持,终将美好。
展开
-
python 两数相加算法题
力扣上的题:给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头示例1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例2:输入:l1 = [0], l2 = [0]输出:[0]示例3:输入:l1 = [9...原创 2021-08-27 22:33:34 · 479 阅读 · 0 评论 -
python 二叉树算法
二叉树概念:树中每个节点最多只有两个子节点的树结构。节点左边的子树通常叫做‘左子树’,右边的子树叫做‘右子树’代码实现:创建树,并添加节点,遍历树# coding:utf-8class Node(object): """数的节点类""" def __init__(self, item): self.elem = item self.lchild = None self.rchild = Noneclass Tree(o原创 2021-08-26 20:52:39 · 230 阅读 · 0 评论 -
python 二分查找法
二分查找法二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;二分查找要求在一个有序序列中,先找出折半的那个数mid,再用要查找的元素item与之比较,若item刚好等于mid,则返回true,若item的比mid大,则从序列的[mid+1:]中继续递归查找,若item比mid小,则从序列[:mid]中递归查找。代码实现(递归实现)def binary_search(alist, item): n = len(alist) if n == 0:原创 2021-08-25 16:30:16 · 151 阅读 · 0 评论 -
python 排序算法
冒泡排序冒泡排序(英语:Bubble Sort)是一种简单的排序算法。从未排序序列中的第一个元素开始,比较相邻的两个元素,如果第一个比第二个大,则交换它们的位置,一直比较到最后一个元素,针对所有的元素重复以上的步骤,除了最后一个。动图演示:代码实现:def bubble_sort(alist): for j in range(len(alist) - 1, 0, -1): # j表示每次遍历需要比较的次数,是逐渐减小的 for i in ran.原创 2021-08-24 16:20:32 · 431 阅读 · 4 评论 -
python 队列、双端队列的实现
队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的先进先出的线性表。代码实现# coding:utf-8class Queue(object): """队列""" def __init__(self): self.__list = [] def enqueue(self, item): """往队列中添加一个item元素""" self.__list.append(item) def .原创 2021-08-24 11:27:09 · 155 阅读 · 0 评论 -
python 栈
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。算法实现# coding:utf-8class Stack(object): """栈""" def __init__(self): sel原创 2021-08-24 10:45:34 · 118 阅读 · 0 评论 -
python lru_cache缓存
@functools.lru_cache(maxsize=128,typed=False)@lru_cache装饰器可以提供缓存的功能,缓存maxsize组传入参数,在下次以相同参数调用时直接返回上一次的结果。用以节约高开销或I/O函数的调用时间。举个列子:普通计算斐波那契数列的递归代码import timeitcnt = 0def fib(n): if n == 1: global cnt cnt += 1 if n < ...原创 2021-08-23 23:08:19 · 979 阅读 · 0 评论 -
python实现LRU算法
LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。python中有一个标准库的类的OrderedDict,该类有以下两个方法用来实现LRU算法就十分简单:popitem(last=True):有序字典的 popitem() 方法移除并返回一个 (key, value) 键值对。 如果 last 值为真,则按 LIFO 后进先出的顺序返回键值对,否则就按 FIFO 先进先出的顺序返回原创 2021-08-23 20:15:43 · 3388 阅读 · 0 评论 -
python单向链表、单向循环链表、双向链表的实现
单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。表元素域elem用来存放具体的数据。 链接域next用来存放下一个节点的位置(python中的标识) 变量p指向链表的头节点(首节点)的位置,从p出发能找到表中的任意节点。节点实现class Node(object): """单链表节点""" def __init__(self, elem):.原创 2021-08-17 17:16:27 · 207 阅读 · 0 评论