首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
算法修炼之路
傲娇的萌
创建于2021-12-15
订阅专栏
记录自己的算法修炼之路
暂无订阅
共27篇文章
创建于2021-12-15
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
前缀树
给定一个由 10 万个单词组成的库,现要你判断一个单词是否有在库中出现,若出现,求总共出现多少次或者求第一次出现在哪个位置。
Dijkstra算法:单元最短路径算法
Dijkstra算法基于贪心思想,首先把起点到所有点的距离存下来找个最短的,然后松弛一次再找出最短的,所谓的松弛操作就是,遍历一遍看通过刚刚找到的距离最短的点作为中转站会不会更近,如果更近了就更新
无向图的算法:Kruskal算法与Prim算法生成最小生成树
图中描述了6个地点,并用权值标志了各个地点之间的道路距离,现在假设我需要用最小的边,去连通图中所有的地点,这个最小边连通的树就是它的最小生成树。最小生成树,就是无向图中边的权值最小的生成树
拓扑排序算法
给出一个有向图,如何确定访问节点的顺序,并能保证所有的都被访问到,拓扑排序就是来解决这个问题的。拓扑排序:给出一个有向图,依次找出入度为0的点,就可以确定出访问节点的顺序
数据结构:图
图是网络机构的抽象模型,是一组由**边**连接的节点。图可以表示任何**二元关系**,比如道路、航班... 在Javascript中,是没有图这种数据结构的,但是可以用Object和Array构
二叉树的序列化和反序列化
二叉树的序列化和反序列化,就是内存里的一棵树如何变成字符串形式,又如何从字符串形式变成内存里的树。选择先序遍历的编码方式。
在二叉树中找到一个节点的后继节点
对二叉树中序遍历后得到的序列存储了所有节点,在这个序列中可以找到每个节点的后继节点,用这种方式得到节点的后继节点代价比较大,因为要遍历所有的节二叉搜索树的题目要么是根据其性质,要么考察中序遍历
二叉搜索树、二叉树的最近公共祖先
祖先的定义:若节点 p 在节点 root 的左(右)子树中,或 p = root,则称 root 是 p 的祖先。最近公共祖先的定义:设节点 root 为节点 p,q 的某公共祖先,若其左子节...
搜索二叉树、完全二叉树、满二叉树、平衡二叉树
特殊的二叉树有搜索二叉树、完全二叉树、平衡二叉树、满二叉树,本文描述了他们的性质,并且分析了如何去判定。
求一颗二叉树的宽度
如何完成二叉树的宽度优先遍历(常见题目:求一颗二叉树的宽度)在广度优先遍历的基础上,遍历时知道该节点位于哪一层,并记录该层的节点个数
二叉树的先序、中序、后序遍历
二叉树: 数中每个节点最多只能有两个子节点。二叉树的先序、中序、后序遍历可以是递归也可以是非递归,任何递归函数都可以改成非递归函数
两个单链表相交的一系列问题
给定两个可能有环也可能无环的单链表,头节点head1和head2。 请实现一个函数,如果两个链表相交,请返回相交的第一个节点。如果不相交,返回null。
复制含有随机指针节点的链表
rand指针是单链表节点结构中新增的指针,rand可能指向链表中的任意一个节点,也可能指向null。给定一个由Node节点类型组成的无环单链表的头节点head,请实现一个函数完成这个链表的复制
将单向链表按某值划分成左边小、中间相等、右边大的形式
给定一个单链表的头节点head,节点的值类型是整型,再给定一个整数pivot,实现一个调整链表的函数,将链表调整为左部分都是值小于pivot的节点,中间部分都是值等于pivot的节点,右部分都是值大于
判断一个链表是否为回文结构
将链表 List 节点依次压入栈中,利用栈的先进先出性质,依次遍历链表(从head开始遍历)的同时弹出栈顶,如果弹出的节点node与所遍历的链表node相同就继续,不同则结束,表示链表不是回文结构。
教你如何选择排序算法并避开面试中的算法坑题
如果要选择一种排序的话,一般来说,选择快速排序(常数项指标比归并排序最低),如果有空间限制,就选择堆排序,需要稳定性用归并排序。
计数排序与基数排序
桶排序思想下的排序都是不基于比较的排序,时间复杂度为O(N);额外空间复杂度O(N);应用范围有限,需要样本的数据状态满足桶的划分
比较器
比较器在C++里叫`重载比较运算符`,改写比较的规则(改写什么叫大于号,什么叫小于号)在Java中叫`比较器`,Java中的对象,正常情况下,只能进行比较:==或!=,不能使用>或<
数据结构:堆
堆结构是用数组实现的完全二叉树结构。完全二叉树中,如果所有的节点都大于等于它的字节点(即每颗子树的最大值都在顶部),那么这就是最大堆。
从荷兰国旗问题出发,详解快速排序算法的原理
荷兰国旗问题 :给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的
下一页