抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

什么是并查集?并查集(Union-Find)是一种数据结构,主要用于处理动态连通性问题。它支持高效的合并(Union)和查询(Find)操作,常用于解决图的连通性、集合的合并等问题。通过并查集,我们可以将两个(或多个)元素合并到一个集合中,并查询两个元素是否同属一个集合。我们通过数组来实现这个操作 代码示范指的是第i个元素的祖宗(可以理解为一个集合中的祖宗,代表这个集合)一开始认为所有点都是...

前置知识:注意:实现堆需要用到完全二叉树的知识,如果未学习,点击了我也没用,因为我还没写 什么是堆?堆(heap),又叫二叉堆,是一种基于完全二叉树实现的数据结构,它可以实现在堆顶的元素是整个堆里面最大的元素(大根堆),也可以是最小的元素(小根堆),进而获取到整个仪器中的最值的一种数据结构。通过它,我们可以快速获取一组数据中的最值,它的时间复杂度只有O(logn),堆同时也支持删除操作,不过...

什么是栈?我们先回顾一下我们对于队列的学习。我们对于队列的理解,是一个队伍,在队尾进入,先进先出。那么我们应该通过什么来理解栈呢?你可以想象一堆叠在一起的书构成“书塔”,由下往上叠放。每次放书都放在最上面那层书的上面,如果你想取书,由于书的重力你很难从“书塔”的中间取出来书,所以你只能从这一叠书的最上面取书。所以我们每次取书都是取得最上面得一本。你可以理解为一个单头的队列,只有队首,插入元素...

什么是队列?队列(queue)是一种数据结构,它的特点是只允许从队尾入队,从队列头部出队,满足先进先出的性质,即先进入队列的元素先出队列。可以把它理解为排队排在前一个人的后面。比如数字1 5 7 9 2的队列,插入一个元素3,应该插入到队尾,成为3 1 5 7 9 2,再插入一个5,应该排到3的前面,变成5 3 1 5 7 9 2,出队一个头部元素2,则成为3 1 5 7 9,所以满足先进队...