
数据结构
文章平均质量分 61
践行~渐远
我只是简单的不喜欢对自己妄自菲薄,也不喜欢别人替我妄自菲薄而已
展开
-
写递归函数的一些思考
定义递归的基本情况:确定递归函数应该在何时终止,即递归的基本情况。这是一个递归的出口条件,确保递归不会无限进行下去。基本情况应该是可以直接求解或返回的简单情况。确定递归的问题规模:考虑如何将原问题分解为规模更小的子问题。递归函数应该在每一次递归调用时减小问题的规模,使得递归最终会达到基本情况。利用递归调用解决子问题:在递归函数中调用自身来解决子问题。递归调用应当是朝着基本情况逼近的方向进行的,以确保问题规模不断缩小。整合子问题的结果:在递归函数中,将子问题的解合并为原问题的解。原创 2023-12-17 15:51:09 · 144 阅读 · 0 评论 -
并查集<基于ranks 的优化,基于Path Spliting的优化>
Quick Union 的 union(v1, v2):让 v1 的根节点指向 v2 的根节点或者v2的根节点指向v1的根节点,这里就有优化的空间了,到底是谁嫁接到谁身上呢?我们的想法是树低的嫁接到树高的节点,这样不会让树的高度变高,搜索的效率可以提高。因此我们还需要维护一个树的高度的数组ranks。Quick Union 的 find(v1):找到 v1 的根节点,这里就有优化的空间了,在往上找的过程中,可以降低树的高度,采用路径分裂的思路,将路径上的每一个节点都指向其祖父节点,从而降低树的高度。原创 2023-12-17 15:15:50 · 149 阅读 · 0 评论 -
java中ArrayList<E>动态数组的基本实现
GitHub地址:https://github.com/github-HDC/Data-Structure/blob/main/Arraylist%E4%BC%98%E5%8C%96/Update_Arraylist.javapackage Arraylist优化;/** * 简单手动实现ArrayList<E>动态数组的基本功能 【参考至小码哥的恋上数据结构】 * @param <E> */@SuppressWarnings("unchecked")publ原创 2021-05-19 14:57:36 · 156 阅读 · 0 评论 -
深度优先搜索搜索对处理最短路径和找到一个可行路径的深思
引出题目:从起点(0,0)出发,到达P点的一条可行路径和最短路径的步数 【" * "表示可走,"X"表示不可走,"P"表示终点】 {'*','*','*','*','*','*','*','*'}, {'X','X','X','X','X','X','*','*'}, {'*','*','*','*','X','*','*','*'}, {'*','*','X','*','X',原创 2021-04-30 23:42:24 · 622 阅读 · 1 评论 -
单链表的反转:腾讯面试题
对于单链表的反转我们这里提供三个方法供大家参考1.头插法2.利用Stack栈(先进后出)3.递归实现【和2方法类似,都是通过栈这个数据结构来实现】一丶头插法思路:创建一个新的 new_head 指针 用来记录返回反转后的单链表的头指针。遍历原先的链表,每遍历到一个元素Node,将其插入到 new_head 指针的前面【】,再让 new_head 指针指向新插入的节点【Node】,以此类推……实现了单链表的反转 //反转代码 public Node reserve(){原创 2020-12-01 22:31:40 · 236 阅读 · 2 评论 -
红黑树核心部分代码实现(JAVA)
import java.util.LinkedList;import java.util.Queue;public class red_black_Tree { //测试代码块 public static void main(String[] args) { red_black_Tree red_black_tree = new red_black_Tree(); int[] arr={72, 50, 38, 14, 2, 85, 68, 91, 11, 8,原创 2020-11-29 21:33:53 · 138 阅读 · 0 评论