
数据结构与算法
文章平均质量分 82
Mriacles
每一个不曾起舞得日子,都是对生命的辜负。
展开
-
并查集详解
在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集。适合于描述这类问题的抽象数据类型称为并查集(union-find set)这个岛使用并查集的解法-最大的优点就是不局限于一台CPU了,原创 2023-07-26 22:28:43 · 279 阅读 · 0 评论 -
二叉平衡树
/ 节点的左孩子 public AVLTreeNode right = null;// 节点的右孩子 public AVLTreeNode parent = null;// 节点的双亲 public int val = 0;// 当前节点的平衡因子=右子树高度-左子树的高度 public AVLTreeNode(int val) {} }原创 2023-07-22 20:00:00 · 90 阅读 · 0 评论 -
map和set
本篇博客讲述了以下知识点HashMap/TreeMap/HashSet/TreeSet 的使用HashMap 和 HashSet 背后的数据结构哈希表的原理和简单实现。原创 2023-07-22 15:20:43 · 201 阅读 · 0 评论 -
二叉搜索树
二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树。原创 2023-07-22 10:57:07 · 72 阅读 · 0 评论 -
优先级队列 - 堆
本篇博客讲述以下知识点掌握堆的概念及实现掌握 PriorityQueue 的使用。原创 2023-07-21 21:16:09 · 63 阅读 · 0 评论 -
LinkedList与链表
本篇博客主要讲述 - 以下内容ArrayList的缺陷链表链表相关ojLinkedList的模拟实现LinkedList的使用ArrayList和LinkedList的区别方法解释尾插 e将 e 插入到 index 位置尾插 c 中的元素删除 index 位置元素删除遇到的第一个 o获取下标 index 位置元素将下标 index 位置元素设置为 element清空判断 o 是否在线性表中返回第一个 o 所在下标返回最后一个 o 的下标截取部分 list。原创 2023-07-21 05:00:00 · 53 阅读 · 0 评论 -
ArrayList与顺序表
本文介绍1.线性表2. 顺序表3. ArrayList的简介4. ArrayList使用5. ArrayList的扩容机制ArrayList是以泛型方式实现的,使用时必须要先实例化ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问ArrayList实现了Cloneable接口,表明ArrayList是可以clone的ArrayList实现了Serializable接口,表明ArrayList是支持序列化的。原创 2023-07-21 01:30:00 · 59 阅读 · 0 评论 -
lambda 表达式
lambda 表达式 是:允许你用表达式来代替接口的一种写法 ,原创 2023-06-01 21:00:00 · 141 阅读 · 0 评论 -
java反射机制
Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制。总结 : 反射就是通过非常规手段 ,拿到一个类不提供给你的属性或方法 - 是一把双刃剑。原创 2023-05-31 22:33:36 · 179 阅读 · 0 评论 -
排序算法总结
排序 : 就是将一串记录, 按照其中某个关键字的大小 , 递增或递减的操作稳定性 : 排完序后, 原来相同的数据,顺序不变 - 这种算法被称为稳定的内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。原创 2023-05-30 15:00:00 · 73 阅读 · 0 评论 -
栈的详解.
描述 : 给出一个仅包含字符’(‘,’)‘,’{‘,’}‘,’[‘和’]',的字符串,判断给出的字符串是否是合法的括号序列括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。采用链式存储的栈称为链栈,链栈的优点是便于多个栈共享存储空间和提高其效率,且不存在栈满上溢的情况。描述 : 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop、top 和 min 函数操作时,栈中一定有元素。空栈:不含任何元素。原创 2023-05-29 21:00:00 · 213 阅读 · 0 评论 -
链表专项练习
结构越复杂 - 使用越简单 , 结构越简单-使用越复杂;我愿称之为思考守恒定律这篇文章主要写 - 链表相关的一些题型以及解题思路 : 这里收录的题只是 , 单纯使用链表的题型不涉及其他的数据结构一些感想 :对于做题思路 : 最重要的是写出它的结构流程 ,结构流程图越完备, 写代码就越快 , 所以尽量将结构流程图写好。原创 2023-05-29 18:00:00 · 199 阅读 · 0 评论 -
Java泛型讲解
在讲解泛型的使用之前 , 首先要明白 一个事情 , 就是为什么要有泛型 ,泛型的初衷是解决一个类只能传基本数据类型或指定数据类型的情况那么 想象这样一种情况 ,我想设计一个类 ,里面包含我一些常用的方法, 但是我不确定传过来的参数类型是什么,怎么解决?答 : 使用Object 数组来接受 , object是所有类的父类 ,当然可以接受任意数据,但是我不光想要存,我还想要取出来用?怎么取 , 有人会说 ,用Object 取出来,当然可以取出来,然后呢 在强制类型转换吗?原创 2023-05-25 16:00:00 · 215 阅读 · 0 评论 -
空间复杂度与时间复杂度
时间复杂度和空间复杂度是用来干嘛的?答 : 用来评价一个算法的好坏时间复杂度 : 主要评价一个算法的运行速度空间复杂度 : 主要评价一个算法所需要的额外空间由于现在空间很便宜,所以评价一个算法主要标准,就是时间复杂度。原创 2023-05-25 15:00:00 · 50 阅读 · 0 评论 -
哈希表与布隆过滤器
哈希表查找和删除为什么是O(1),因为通过哈希函数算肯定是O(1)的(即使是这个时间长),而通过单链表查询的话(如果这个单链表很短,那么也认为是O(1),单链表长度一旦过长就出发扩容操作)怎样设计,就是将40亿的数都算一遍哈希值,然后模个100,放到0-99的文件(这些文件肯定是能放到内存中的)中,然后在这些文件中找出现次数最多的数,然后比较所有文件中出现次数最多的数.如果这个单链表的值的数量过大了,那就的扩容.也就是将原来的哈希表中的每一个值,重新算一遍哈希模一个新值,然后在以链表形式串起来.原创 2023-07-26 22:18:15 · 507 阅读 · 0 评论 -
贪心算法-详解
贪心算法的设计思路1:先利用暴力解出题目来-对照组2:利用脑海中的多种贪心算法去验证对照组的答案和案例3:如果正确直接用这种4:不要去证明贪心算法为什么正确(也就是说利用你最朴素的思想找到局部最优解,然后循环这个过程即可)注:贪心算法用的最多的就是排序和堆原创 2023-04-20 14:50:59 · 55 阅读 · 0 评论 -
二叉树系列-题型与概念
二叉树的遍历理解递归序 :一棵树,如果是以递归的形式去遍历的话,那么每一个节点都会被调用三次.而先序中序后序只是打印操作时机不同而已.原创 2023-04-16 15:51:33 · 161 阅读 · 0 评论 -
前缀树-相关算法
TireNode作为前缀树数据结构支持//以该字符作为前缀出现过几次 public int end;//最后在结尾出现过几次 public TireNode [ ] nexts;pass = 0;end = 0;//nexts[0] == null 代表没有走向'a'的路径 nexts = new TireNode [ 26 ];//如果字符特别多,HashMapnexts;} }原创 2023-04-20 14:35:13 · 51 阅读 · 0 评论 -
图的存储方式--与相关算法
图的难度,并不在于算法难度,而在于图的表现形式多样,不同的题中的图表现形式不一样.一个好的解决思路就是,用你喜欢的一种图结构,来实现所有的图算法,然后以后遇到不同的图表现形式,写一个接口函数,将这个表现形式转换为你熟悉的图结构,在用这个结构实现该算法。原创 2023-04-20 14:30:22 · 299 阅读 · 0 评论