摘要: 最长公共子序列 1.算法思路 主要流程如上图所示,动态规划主要体现在两个辅助的二维数组(把每一步执行所的的结果都存起来)。最后,构造最优解的时候,利用辅助二维数组得到最优解 *2.算法实现 def LCS(lisx, lisy): # 构造最优解,x 和 y 从最大值出发,直到有一个为 0(到边上了 阅读全文
posted @ 2020-05-24 17:29 xiaoqichaoren 阅读(259) 评论(0) 推荐(0)
摘要: 动态规划(DP)与分治法类似,也是将待求解问题分成若干子问题。不同的是,适用于动态规划求解的问题,经分解得到的子问题往往不是互相独立的。而用分治法求解时往往耗费指数时间,有时有些子问题被重复计算了很多次。这样浪费了大量的时间和空间。此时就需要用到动态规划:用一个表记录所有已解决的子问题的答案。不管以 阅读全文
posted @ 2020-05-24 17:27 xiaoqichaoren 阅读(426) 评论(0) 推荐(0)
摘要: 图的存储结构相对于线性表和树来说更为复杂,因为图中的顶点具有相对概念,没有固定的位置。图是由(V, E)来表示的,V是顶点的集合,E是边的集合。 图看起来就像下图这样: 图有各种形状和大小。边可以有权重(weight),即每一条边会被分配一个正数或者负数值。边是可以有方向的。在上面提到的例子中,边是 阅读全文
posted @ 2020-05-24 17:26 xiaoqichaoren 阅读(243) 评论(0) 推荐(0)
摘要: 1.栈 栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。栈可以用来在函数调用的时候 阅读全文
posted @ 2020-05-24 17:25 xiaoqichaoren 阅读(205) 评论(0) 推荐(0)
摘要: 链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 无头单向非循环列表:结构简单,一般不会单独用来存放数据。实际中更多是作为其他数据结构的子结构,比如说哈希桶等等。 带头双向循环链表:结构最复杂,一般单独存储数据。实际中经常使用的链表数据结构,都是 阅读全文
posted @ 2020-05-24 17:24 xiaoqichaoren 阅读(182) 评论(0) 推荐(0)
摘要: 一、哈希表 散列表,也叫哈希表,是根据关键码和值 (key和value) 直接进行访问的数据结构。哈希表就是基于字典实现的 通过key和value来映射到集合中的一个位置,这样就可以很快找到集合中的对应元素。记录的存储位置=f(key)。这里的对应关系 f 称为散列函数,又称为哈希 (hash)函数 阅读全文
posted @ 2020-05-24 17:23 xiaoqichaoren 阅读(300) 评论(0) 推荐(0)
摘要: 1.数组 数组是可以再内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始。在python中没有数组,取而代之的是列表和元组 *2.栈 栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。 栈的特点是:后进先出,从栈顶放入 阅读全文
posted @ 2020-05-24 17:22 xiaoqichaoren 阅读(330) 评论(0) 推荐(0)
摘要: 三、合并排序——T(n)=O(nlog2n) 1.算法思想 合并排序是用分治策略对n个元素进行排序的算法。基本思想是递归地将待排序元素分成大小相同的两个子序列(直到分到最小)。分别对这两个子序列进行排序(自底向上),然后将两个子序列合并到一起。如下图:先将序列递归拆分到不能再分;然后在逐层排序 *2 阅读全文
posted @ 2020-05-24 17:21 xiaoqichaoren 阅读(372) 评论(0) 推荐(0)
摘要: -基本思想 将一个规模为n的问题分解成k个规模较小的子问题。这些子问题互相独立且与原问题相同。递归的解这些子问题,然后将各子问题的解合并得到原问题的解 一、二分搜索算法 问题描述:在给定好的以排好序的n个元素的数组 l 中,查找出某一特定的值x 1.算法思想(T(n)=O(1)~O(log2n)) 阅读全文
posted @ 2020-05-24 17:20 xiaoqichaoren 阅读(260) 评论(0) 推荐(0)
摘要: 一、BFS:广度优先搜索 从某点开始,走该点所有的方向,然后再从这些路径中找可以走的路,直到最先找到符合条件的点,这个运用需要用到队列(FIFO队列)。这个过程叫做对图或树的遍历 *-算法模板 level = 0 # 代表当前遍历到的层数 while deque不空: # deque中的是当前所有父 阅读全文
posted @ 2020-05-24 17:16 xiaoqichaoren 阅读(149) 评论(0) 推荐(0)