数据结构与算法
数据结构与算法学习笔记+leetcode刷题
下雨天的小鱼
数据结构,机器学习,深度学习,CV,每天进步一点点
展开
-
小鱼要学数据结构与算法(基于python)—Day22图及其抽象数据类型实现
数据结构学习笔记22(北大公开课)目录图一、知识概览1.1 概念及定义1.2 图抽象数据类型实现1.3图的应用二、代码实现2.1 实现2.2 实例图一、知识概览1.1 概念及定义1.2 图抽象数据类型实现1.3图的应用下节再详细展开应用部分二、代码实现2.1 实现#ADT Graph的实现#实现class Vertex: def __init__(self,key): self.id=key self.connectedTo={}原创 2020-06-07 17:56:30 · 250 阅读 · 0 评论 -
小鱼要学数据结构与算法(基于python)—Day21AVL树及其实现,树结构小结
数据结构学习笔记21(北大公开课)目录树结构一、知识概览1.1 AVL树1.2 AVL树的实现1.3 AVL树结语1.4 树结构小结1.5 ADT MAP小结二、AVL树代码实现2.1 put方法2.2 UpdateBalance方法2.3 左旋方法2.4 重新平衡方法树结构一、知识概览本章主要讲AVL树及其实现,并对树结构和ADT MAP进行小结。1.1 AVL树1.2 AVL树的实现一些重点及公式推导过程:1.3 AVL树结语1.4 树结构小结1.5 ADT MAP小结原创 2020-06-06 18:00:59 · 349 阅读 · 0 评论 -
小鱼要学数据结构与算法(基于python)—Day20二叉查找树、实现及算法分析
数据结构学习笔记20(北大公开课)目录二叉查找树一、知识概览1.1 二叉查找树操作及性质1.2 二叉查找树实现及算法分析二、代码实现2.1 BST类及其方法2.2 TreeNode类及其方法二叉查找树一、知识概览本章主要讲二叉查找树、实现及算法分析1.1 二叉查找树操作及性质下面是主要操作及BST的性质:1.2 二叉查找树实现及算法分析算法复杂度和key的分布有关,性能O(log n),极端情况O(n):二、代码实现本节以代码实现BST数据结构为主:2.1 BST类及其方法# 二原创 2020-06-05 17:34:44 · 256 阅读 · 0 评论 -
小鱼要学数据结构与算法(基于python)—Day19树的遍历、优先队列和二叉堆
数据结构学习笔记19(北大公开课)目录树的遍历、优先队列和二叉堆一、知识概览1.1 树的遍历1.2 优先队列和二叉堆1.3二叉堆的实现二、代码实现2.1 树的遍历2.2 二叉堆操作实现树的遍历、优先队列和二叉堆一、知识概览本章主要讲树的遍历、优先队列和二叉堆及实现。1.1 树的遍历主要有前序遍历,后序遍历,中序遍历三种方法1.2 优先队列和二叉堆由优先队列引出二叉堆,最小堆,最大堆的概念。介绍二叉堆数据结构常用操作。1.3二叉堆的实现用非嵌套列表来实现二叉堆。另外,可以用二叉堆进行排原创 2020-06-02 17:09:07 · 255 阅读 · 0 评论 -
小鱼要学数据结构与算法(基于python)—Day18 树的应用之表达式解析
数据结构学习笔记18(北大公开课)目录树的应用之表达式解析一、知识概览1.1 树的应用二、代码实现2.1 表达式解析树的建立2.2 表达式解析树求值树的应用之表达式解析一、知识概览本章主要讲树的应用——表达式解析。1.1 树的应用本节主要讲如何建立表达式解析树以及如何利用表达式解析树求值二、代码实现2.1 表达式解析树的建立#表达式解析树def buildParseTree(fpexp):#字符串表达的全括号表达式 fplist=fpexp.split()#创建单词列表原创 2020-06-01 21:52:20 · 335 阅读 · 0 评论 -
小鱼要学数据结构与算法(基于python)—Day17 非线性数据结构:树、相关术语及实现方法
数据结构学习笔记17(北大公开课)目录散列一、知识概览1.1 树1.2 相关术语1.3 树的数据结构实现二、实现代码2.1嵌套列表法2.2 链表法散列一、知识概览本章主要讲非线性数据结构:树,定义、相关术语以及实现。1.1 树1.2 相关术语以下是树的相关术语以及两种定义方式:1.3 树的数据结构实现主要有两种实现方法:嵌套列表法和链表法(1)嵌套列表法(2)链表法二、实现代码2.1嵌套列表法# 树数据结构实现# 嵌套列表法def BinaryTree(r):原创 2020-05-31 16:14:21 · 218 阅读 · 0 评论 -
小鱼要学数据结构与算法(基于python)—Day16散列函数设计、冲突解决方案、映射数据类型、排序查找小结
数据结构学习笔记15(北大公开课)目录散列一、知识概览1.1 散列函数设计1.2 冲突解决方案1.3 映射抽象数据类型1.4 排序查找小结二、 代码实现2.1 非数项散列函数设计2.2 映射数据类型实现散列一、知识概览本章主要讲解散列函数设计、冲突解决方案、映射数据结构、排序查找小结知识概览如下。1.1 散列函数设计对于数字类型主要有折叠法和平方取中法。1.2 冲突解决方案主要有两种方法,一种是开放定址,一种是数据项链:第一种方法,即开放定址详解:1.3 映射抽象数据类型1.4原创 2020-05-30 18:07:41 · 478 阅读 · 2 评论 -
小鱼要学数据结构与算法(基于python)—Day15散列、散列函数、区块链
数据结构学习笔记15(北大公开课)目录散列一、知识概览1.1 散列1.2 散列函数1.3 散列函数应用二、python散列函数库散列一、知识概览本章主要讲解散列、散列函数、区块链,知识概览如下。1.1 散列1.2 散列函数1.3 散列函数应用重点介绍区块链二、python散列函数库import hashlibu1=hashlib.md5("hello world!".encode("utf-8")).hexdigest()u2=hashlib.sha1("hello world原创 2020-05-29 12:57:40 · 425 阅读 · 2 评论 -
小鱼要学数据结构与算法(基于python)—Day14归并排序和快速排序
数据结构学习笔记14(北大公开课)目录排序和查找一、知识概览1.1 归并排序1.2 快速排序二 代码实现2.1 归并排序2.2 更pythonic的归并排序2.3 快速排序排序和查找一、知识概览本章主要讲解六种排序算法中的归并排序和快速排序,知识概览如下。1.1 归并排序1.2 快速排序归并排序的重点在于合,而快速排序的重点在于分,下面是分裂过程:二 代码实现2.1 归并排序#归并排序def mergeSort(alist): if len(alist)>1:原创 2020-05-28 22:47:00 · 220 阅读 · 0 评论 -
小鱼要学数据结构与算法(基于python)—Day13插入排序和谢尔排序
数据结构学习笔记13(北大公开课)目录排序和查找一、知识概览1.1 插入排序算法1.2 谢尔排序二、代码实现2.1插入排序2.2 谢尔排序2.3 输出排序和查找一、知识概览本章主要讲解六种排序算法中的插入排序和谢尔排序,知识概览如下:1.1 插入排序算法1.2 谢尔排序二、代码实现2.1插入排序# 插入排序def insertionSort(alist): # index是待插入项位置 for index in range(1, len(alist)):原创 2020-05-27 21:15:40 · 196 阅读 · 2 评论 -
小鱼要学数据结构与算法(基于python)—Day12冒泡排序与选择排序
数据结构学习笔记12(北大公开课)目录排序和查找一、知识概览1.1 冒泡排序算法1.2 选择排序算法二、代码实现2.1冒泡排序2.2 冒泡排序改进算法2.3 选择排序算法2.4 输出结果排序和查找一、知识概览本章主要讲解六种排序算法,知识概览如下:1.1 冒泡排序算法1.2 选择排序算法二、代码实现2.1冒泡排序# 冒泡排序代码def bubbleSort(alist): # 趟数从n-1开始一直到1 for passnum in range(len(alist)原创 2020-05-26 17:34:43 · 245 阅读 · 0 评论 -
小鱼要学数据结构与算法(基于python)—Day11查找和排序之查找
数据结构学习笔记11(北大公开课)目录排序和查找一、知识概览二、代码实现2.1顺序查找2.2 二分法查找排序和查找一、知识概览本章整体知识点如下:查找算法知识点如下:二、代码实现2.1顺序查找(1)无序表顺序查找# 顺序查找##无序表顺序查找def sequentialSearch(alist, item): pos = 0 found = False while pos < len(alist) and not found: if a原创 2020-05-25 17:59:35 · 217 阅读 · 0 评论 -
小鱼要学数据结构与算法(基于python)—Day10动态规划案例分析+递归小结
目录解决问题的策略一、知识概览二、博物馆大盗问题2.1 动态规划解法2.2 递归解法解决问题的策略一、知识概览本章介绍了动态案例分析——博物馆大盗问题。分别用动态规划和递归法求解。最后对递归进行小结。二、博物馆大盗问题2.1 动态规划解法# #博物馆大盗问题# ##动态规划解法# #宝物的重量和价值tr=[None,{'w':2,'v':3},{'w':3,'v':4},# {'w':4,'v':8},{'w':5,'v':8},# {'w':9原创 2020-05-24 12:14:19 · 611 阅读 · 0 评论 -
小鱼要学数据结构与算法(基于python)—Day9动态规划求解找零兑换问题
目录解决问题的策略一、知识概览二、动态规划代码实现三、动态规划算法改进解决问题的策略一、知识概览本章介绍了找零兑换问题的动态规划解法。二、动态规划代码实现#找零兑换问题##动态规划解法def dpMakeChange(coinValueList,change,minCoins): #从1分开始到change逐个计算最少硬币数 for cents in range(1,change+1): #初始化硬币数最大值 coinCounts=cents原创 2020-05-22 22:38:46 · 313 阅读 · 0 评论 -
小鱼要学数据结构与算法(基于python)—Day8优化问题与策略
目录解决问题的策略知识概览找零兑换问题递归解法递归解法优化解决问题的策略知识概览本章首先引入了分治策略,之后重点介绍了找零兑换问题,分别讲解了贪心策略,递归解法和动态规划解法。找零兑换问题递归解法#找零兑换问题##递归解法def recMC(coinValueList,change):#硬币体系和找零个数 minCoins=change if change in coinValueList:#最小规模直接返回:正好等于某一硬币的币值 return 1原创 2020-05-21 20:43:21 · 301 阅读 · 0 评论 -
小鱼要学数据结构与算法(基于python)—Day7递归
目录递归知识概览实现递归知识概览实现1、列表求和##列表求和#迭代法def listSum(numList): theSum=0 for i in numList: theSum=theSum+i return theSum#print(listSum([1,3,5,7,9]))#递归法def listSum2(numList): if len(numList)==1: return numList[0] els原创 2020-05-20 20:45:38 · 287 阅读 · 0 评论 -
小鱼要学数据结构(基于python)—Day6有序表与线性结构小结
目录数据结构(北大公开课)线性结构有序表线性结构小结数据结构(北大公开课)线性结构有序表1、有序表知识结构2、有序表算法分析3、有序表实现#有序表class OrderedList: def __init__(self): self.head=None def search(self,item): current=self.head found=False stop=False while c原创 2020-05-19 20:25:43 · 299 阅读 · 2 评论 -
小鱼要学数据结构(基于python)—Day5无序表
目录数据结构(北大公开课)线性结构无序表数据结构(北大公开课)线性结构无序表1、知识结构2、无序表的实现(1)节点#链表实现:节点(Node)class Node: def __init__(self,initdata): self.data=initdata self.next=None def getData(self): return self.data def getNext(self): re原创 2020-05-19 12:52:31 · 227 阅读 · 0 评论 -
小鱼要学数据结构(基于python)—Day4双端队列
目录数据结构(北大公开课)线性结构双端队列数据结构(北大公开课)线性结构双端队列1、双端队列知识框架2、双端队列的实现#实现双端队列class Deque: def __init__(self): self.items=[] def isEmpty(self): return self.items==[] def addFront(self,item): self.items.append(item) def a原创 2020-05-18 17:14:16 · 171 阅读 · 0 评论 -
小鱼要学数据结构(基于python)—Day3队列
目录数据结构笔记(北大公开课)队列数据结构笔记(北大公开课)队列下面是本课知识点概览:下面是队列的两个应用举例:下面是本课代码#实现队列class Queue: def __init__(self): self.items=[] def isEmpty(self): return self.items==[] def enqueue(self,item): self.items.insert(0,item) d原创 2020-05-10 21:15:52 · 308 阅读 · 0 评论 -
小鱼要学数据结构(基于python)—Day2栈
目录数据结构学习笔记(北大公开课)线性结构栈数据结构学习笔记(北大公开课)线性结构栈1.如何用python实现栈```python#实现stackclass Stack: def __init__(self): self.items=[] def isEmpty(self): return self.items==[] def push(self,item):#将item加入栈顶,无返回值 return self.it原创 2020-05-09 15:55:10 · 424 阅读 · 0 评论 -
小鱼要学数据结构(基于python)—Day1算法分析
目录数据结构学习笔记(北大公开课)线性结构—算法分析累计求和变位词判断问题数据结构学习笔记(北大公开课)线性结构—算法分析下面是这一课的知识点概览,首先介绍了大O记号的七种级别的复杂度。下面是这一课相关的代码实践累计求和两种方法对比:用time计时##累计求和#迭代import timedef sumofn(n): start=time.time() theSum=0 for i in range(1,n+1): theSum=theSum+i原创 2020-05-09 15:45:46 · 973 阅读 · 3 评论