数据结构与算法
盲目地发奋
这个作者很懒,什么都没留下…
展开
-
最长回文子串问题马拉车算法python
主要对马拉车算法来一波意识流理解,方便不手撕算法的时候可以嘴嗨一波 1.有点像滑窗法。滑窗的中心作为一个重要迭代遍历center,滑窗的右边界是另一个重要迭代参数maxright,和中心一起更新。 2.遍历整个字符串,假设正在遍历的字符索引为i: 2.1.如果i大于maxright,按照一般的中心扩展算法开始算 2.2.如果i...原创 2020-03-23 12:05:30 · 258 阅读 · 0 评论 -
#快速排序理解笔记
快速排序=给基准数据找其正确索引位置的过程。 步骤 1.确定基准数据。 2.大于基准数据的数放置在基准数据右边,小于基准数据放置在左边。(相当于找基准数据所在的索引) 3.对于基准数据的左右序列,分别进行1、2(递归终止条件:子序列长度为一) 为什么快速排序的最坏情况等于冒泡排序O(n^2) 假设由前向后遍历且基准数据每次的正确位置都在最后。这样每次都相当于一个冒泡排序。 ...原创 2020-03-15 16:16:20 · 84 阅读 · 0 评论 -
散列(hash table)概念总结
散列 散列冲突解决方法 1.分离链接法:将散列值相同的保存到一个表中(可以是链表、树、也可以是另一个散列) 2.开放定址法: 1)线性探测法:逐个探测是否有空闲地址(冲突函数为线性) 2)平方探测法:冲突函数为二次函数的探测方法 3)双散列:冲突函数为另一个散列函数(个人理解 再散列 开放定址法可能会导致散列元素填的太满,当散列太满时,建立另一个大约两倍大的表,将元素按照新的散列函数填入新散列。 ...原创 2020-01-12 20:22:27 · 141 阅读 · 0 评论 -
深度优先、广度优先和四种树遍历方法的关系
深度优先: 先序遍历:先处理父节点,在处理儿子节点 中序遍历:左子节点—>父节点—>右子节点 中序遍历:右子节点—>父节点—>左子节点 (使用递归实现) 广度优先: 层次遍历:第D层所有节点—>第D+1层所有节点 (使用队列实现) ...原创 2020-01-11 15:48:28 · 202 阅读 · 0 评论