首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
数据结构与算法
ricochet
创建于2021-05-10
订阅专栏
学习算法,快乐每一天。
等 7 人订阅
共17篇文章
创建于2021-05-10
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
【数据结构与算法】有序表详解
有序表介绍 有序表和哈希表的本质区别就是:哈希表的Key是通过Hash函数散列组织的,而有序表的Key是顺序组织的。 有序表除了支持哈希表的所有操作之外,还提供了一些由于Key的有序性可以实现的其他操
【数据结构与算法】动态规划实战入门
引入 本文主要内容就是描述将一个使用暴力递归解决的问题如何一步一步改成动态规划的。 整体脉络是首先要找到一种尝试的方法,如果已经确定了尝试方法,就可以只通过尝试方法的本身来去做优化。尝试方法本身是和题
【数据结构与算法】Morris遍历详解
Morris遍历 1. 介绍 我们不管是用递归方式还是非递归方式遍历二叉树,只能做到时间复杂度为O(N),额外空间复杂度为O(logN),根本做不到额外空间复杂度为O(1)。 因为递归方式遍历二叉树的
【数据结构与算法】单调栈详解
单调栈 1. 引入 单调栈解决的是这样一个问题,比如说给一个数组arr = { 5,4,6,7,2,3,0,1 },我想知道每一个元素左边比该元素大且离得最近的元素和右边比该元素大且离得最近的元素都是
【数据结构与算法】滑动窗口详解
滑动窗口 1. 窗口 窗口就是一种特定的运动轨迹。 如上图,一开始窗口的左边界和右边界都停留在整个数组的最左侧,窗口是空的。 窗口的左边界 L 和右边界 R 只能向右移动,不能向左移动。同时在移动时必
【数据结构与算法】Manacher算法详解
Manacher算法 1. 引入 Manacher算法和KMP算法都是解决字符串相关题目的常见算法原型,但是各自解决的问题却不一样。 Manacher算法一开始是专门用来解决 "字符串中最长回文子串问
【数据结构与算法】KMP算法详解
KMP算法 1. 引入 KMP算法中最著名的应用就是 "求子串问题"。 题目: 现在有str1="abcd1234efg" 和str2="1234",如何判断str2是不是str1的子串? 注意,子串
【数据结构与算法】并查集详解
并查集 1. 引入 并查集是一种能够将集合快速合并的结构。 假设有5个样本ABCDE,我们将每一种样本单独构成一个集合:{A},{B},{C},{D},{E}。 现在我们需要对外提供两个操作: 第一个
【数据结构与算法】与哈希函数有关的结构
哈希函数 日常听说过的MD5算法,SHA1算法都是哈希函数的模型。 本文不会阐述哈希函数的实现原理,因为当前市面上流行的哈希函数至少有上百种,每一种哈希函数的原理都不一样,但是它们所要维持的特性都是一
【数据结构与算法】暴力递归实战入门
1. 暴力递归 通俗来说,使用一种彻彻底底穷举的方法把一个答案试出来,就叫暴力递归(Force Recursive)。 暴力递归就是尝试,把问题转化为规模缩小了的同类问题的子问题,子问题通过决策过程概
【数据结构与算法】贪心算法实战入门
1. 前缀树 1.1 说明 前缀树和贪心算法有关系,我们先不说是什么关系。 前缀树又称为Trie,单词查找树等,是一种树形的结构,用于存储大量的字符串。 它的特点在于,是空间换时间,利用字符串的公共前
【数据结构与算法】图实战入门
1. 概述 1.1 图的构成 图由两个集合构成:点集V,边集E,二元定义为 G = (V,E)。 1.2 有向图和无向图 图分为:有向图,无向图。 无向图:每一条边都是双方向性的,( x, y ) 和
【数据结构与算法】二叉树实战入门
1. 二叉树 节点结构: 2. 二叉树的遍历 2.1 递归序 有一个如下构造的二叉树: 我们使用递归的方式遍历如上二叉树: 执行结果为:[ 1, 2, 4, 4, 4, 2, 5, 5, 5, 2,
【数据结构与算法】链表实战入门
1. 哈希表简述哈希表在使用层面上可以理解为一种集合结构。HashSet和HashMap都是哈希表的实现,有无伴随数据,是HashSet和HashMap的唯一区别。如果只有key,没有伴随数据valu
【排序三部曲】3. 特殊排序算法
插入排序,归并排序,快速排序,堆排序等等,都是基于比较的排序算法。意思就是说,同样一个过程,无论比较的是int,float,double,Student,Animal等任何类型,只要规定两个实例之间如何比大小,那么排序的过程完全可以复用。 常见的不基于比较的排序有:计数排序,基…
【排序三部曲】2. 高级排序算法
归并排序1. 代码2. master公式分析时间复杂度从代码可知,a = 2,由T(N/2)得到b = 2, 由mergeHelp方法的时间复杂度为O(N)得到d = 1。由master公式logba
【排序三部曲】1. 简单排序算法
插入排序的时间复杂度受到了数据状况的影响。 对[1,2,3,4,5]进行排序,时间复杂度是O(N)。 对[5,4,3,2,1]进行排序,时间复杂度是O(N^2)。 一般研究算法的复杂度都是按照最差指标O(...),所以为插入排序的时间复杂度O(N^2)。 1. 普通写法 额外空…