
数据结构
文章平均质量分 77
孙宇航_
舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!没有人会关心你付出过多少努力,撑的累不累,摔得痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【数据结构进阶】并查集
并查集正如它的名字一样,并查集(Union-Find)就是用来对集合进行 合并(Union) 与 查询(Find) 操作的一种数据结构。合并 就是将两个不相交的集合合并成一个集合。查询 就是查询两个元素是否属于同一集合。并查集的原理并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。比如说,我们可以用并查集来判断一个森林中有几棵树、某个节点是否属于某棵树等。组成并查集主要由一个整型数组pre[ ]和两个函数find( )、join( )构成。原创 2023-01-06 12:40:09 · 3795 阅读 · 17 评论 -
【数据结构进阶】布隆(Bloom Filter)过滤器【哈希+位图的整合】
布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。原创 2023-01-01 12:48:52 · 1563 阅读 · 11 评论 -
【数据结构进阶】位图【有些资料叫做 bitMap】
位图 【有些资料叫做 bitMap】给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。【腾讯】10亿个字节 大约是1个G10亿个整数 大约是4个G40亿个整数 大约是16个G解法一:遍历,时间复杂度O(N)解法二:排序(O(NlogN)),利用二分查找: logN 面临问题就是 内存存不下。解法三:位图解决数据是否在给定的整形数据中,结果是在或者不在,刚好是两种状态,那么可以使用一个二进制比特位来代表数据是否存在的信息,如果二进原创 2022-12-27 14:40:44 · 422 阅读 · 7 评论 -
【数据结构进阶】红黑树【TreeMap TreeSet底层就是红黑树】
红黑树【TreeMap TreeSet底层就是红黑树】概念红黑树是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可能是Red或者Black。通过对任何一条从根到叶子结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,因而是 接近平衡的。原创 2022-12-23 08:56:38 · 1480 阅读 · 20 评论 -
【数据结构进阶】二叉平衡树
一、 二叉平衡树概念二叉搜索树有称 二叉排序树,它也可以是一个空树。如果它的左子树不为空,则左子树上所有结点的值都小于根结点的值如果他的右子树不为空,则右子树上所有结点的值都大于根结点的值它的左右子树也分别是二叉搜索树在这里插入图片描述由图可以看出:二叉搜索树中最左侧的节点是树中最小的节点,最右侧节点一定是树中最大的节点在这里插入图片描述采用中序遍历遍历二叉搜索树,可以得到一个有序的序列:1 3 4 5 6 7 8 9 10二叉搜索树的查找若根结点不为空: 如果根结点的值原创 2022-12-17 21:49:45 · 598 阅读 · 5 评论 -
(软考-软件设计师.下午)动态规划算法、回溯算法、贪心算法、分治算法的应用
关键字:【递归技术】【二分查找】将一个难以直接解决的分解成一些的相同问题以便于。原创 2022-10-06 17:44:52 · 2244 阅读 · 0 评论 -
【数据结构】反射_数据结构
2>. 在日常的第三方应用开发的过程中,经常遇到某个类的某个成员变量、方法或是私有的或是只对系统应用开发的,这时候就可以用Java反射机制获取私有成员或方法。,对于任意一个类,都能够知道这个类的所有属性和方法;对于任何一个对象,都能调用它的任意方法和属性,既然可以拿到,那就可以修改部分类型信息;. 反射最重要的作用是开发各种通用的框架。,通过反射机制可以判断出该对象和类属于那些类。反射机制(reflection)——所有和反射相关的包都在。1. 常用获得类相关的方法。. 反射基本信息。...原创 2022-08-29 18:20:13 · 282 阅读 · 0 评论 -
【数据结构】数据结构之排序
接上篇,我们先来了解一下堆排序,堆排序了解完,给大家总结了一些基本常见的排序算法,希望对大家的学习有所帮助。排序的理解**是一个序列对象按照某个关键字进行递增或递减的操作**> (1)**稳定性**:如果a原本在b前面,并且a=b,排序之后a仍然在b的前面,说明这个是稳定的,反之,就不稳定。> > (2)**内部排序**:数据元素全部放在原创 2022-08-26 20:32:36 · 741 阅读 · 0 评论 -
【数据结构】PriorityQueue常用接口介绍
优先级队列的特点就总结的差不多了,后面会对排序做一些总结和练习,希望可以对大家学习有所帮助吧。使用offer前,必须告诉offer以什么方式比较添加。PriorityQueue() 初始默认容量为11。原创 2022-08-24 10:35:19 · 249 阅读 · 0 评论 -
优先级队列【堆】——数据结构
优先级队列:不同于先进先出队列,每次从队列中取出的是具有最高优先权的元素。优先级队列相对于普通队列应该提供两个最基本的操作(1) 返回最高优先级对象(2)添加新对象在JDK8中的优先级队列底层使用了。原创 2022-08-23 18:33:40 · 563 阅读 · 0 评论 -
二叉树相关OJ题目复习总结
最近开始复习了,疫情影响又要延迟开学,趁着这几天好好复习一下下,把二叉树的一些OJ题做做总结,权当练习代码能力,一个暑假数学建模培训占了好长时间,后面赶正式开学前抓紧复习吧!!!二叉树中最近公共祖先求最近公共祖先,其实又是求两个链表的交点。求最近公共祖先先判断两个栈的大小,将大栈减到与小栈大小相等来进行 一 一比较,当相同时找到最近公共祖先。栈思路的难点就是 如何找到 根节点 到 指定节点的路径,存到栈当中?原创 2022-08-22 20:28:12 · 1383 阅读 · 0 评论 -
【数据结构】顺序表实现简单的【扑克牌】
目录1.定义一张牌2.定义一副牌3.洗牌4.发牌5.整体代码运行结果: 2.定义一副牌3.洗牌4.发牌5.整体代码运行结果:原创 2022-07-12 17:48:02 · 617 阅读 · 0 评论 -
【数据结构】数据结构中的栈——Java
所以当栈的存储方式为链式并且是单链表时, 入栈选头插法是最好的选择。栈继承了Vector,Vector和ArrayList类似,属于动态顺序表,Vector属于线程安全。3.栈的使用4.关于栈的面试题(LeetCode)括号匹配括号匹配思路:我们考虑使用栈,当遇到匹配的最小括号对时,我们将这对括号从栈中删除(即出栈),如果最后栈为空,那么它是有效的括号,反之不是。代码展示:逆波兰表达式逆波兰表达式逆波兰表达式,也叫做后缀表达式。下图中左边是中缀表达式,中间是其对应的语法树,原创 2022-07-12 16:43:16 · 960 阅读 · 0 评论 -
【数据结构】无头单链表的实现 —— Java
链表:其实呢,链表的结构非常多样,分为以下情况这次呢,我们说说无头单向非循环链表代码实现: 对无头节点单链表的主要操作就是 头插法,尾插法,任意节点插入。头插法:尾插法: 任意节点插入: 无头结点单链表实现 这里有一篇博主对无头单链表讲的特别详细,想要深入了解的可以去学习学习。...原创 2022-07-09 08:30:44 · 409 阅读 · 4 评论 -
【数据结构】队列--必刷面试题【Java&LeetCode】
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:1.创建两个队列2. 添加元素的时候添加到辅助队列3. 如果主队列不为空的时候,将元素弹出重新添加到辅助队列(这样后先入队的元素就在后入队元素的后面,先进后出)4. 然后将两个队列交换队列是先进先出的规则,把一个队列中的数据导入另一个队列中,数据的顺序并没有变,并没有变成先进后出的顺序。如下面图所示,用两个队列主队列和辅助实现队列的功能,辅助队列其实完原创 2022-07-08 10:07:53 · 404 阅读 · 12 评论 -
【数据结构】链表之十大经典面试题【Java&LeetCode】
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。删除前:删除后:分情况:1.当链表为空时,直接返回null。2.当链表不为空时,定义一个前驱节点prev和cur,遍历链表,当cur.val == val时,如上图例子,要删除32,直接让prev.next=cur.next,就完成了删除操作,cur=cur.next继续遍历链表,当删除的节点为最后一个节点时,将prev.next ==null(置空)。3原创 2022-07-07 18:27:21 · 751 阅读 · 17 评论 -
【数据结构】无头双向链表的实现 —— Java
目录1.无头双向链表2.基础代码3.双向链表中方法的实现3.1 头插法3.2 尾插法 3.3 删除第一次出现的关键字key 3.4 删除所有包含关键字key节点3.5 在给定的任意索引位置插入节点3.6 清空链表的所有节点3.7 打印链表3.8 求链表的长度3.9 查询链表是否给定的关键字key3.双向链表中方法的实现3.1 头插法3.2 尾插法 3.3 删除第一次出现的关键字key 3.4 删除所有包含关键字key节点3.5 在给定的任意索引位置插入节原创 2022-07-06 10:00:38 · 443 阅读 · 0 评论 -
【JavaSE】Iterable,collection以及List的常见方法签名以及含义
图片: 三者的关系如图:由图可得出 Iterable,Collection,List都是接口。文章目录Iterable是一个具有迭代功能的 泛型 接口,可以通过通过for-each循环,从从Iterable获取Iterator或者通过Iterable的for each()方法通过for-each循环迭代CollectionCollection继承于Iterable的泛型接口,用来实现集合的接口。Collection的方法:List是一个接口,接口不能进行实例化,只能引用实现其接口具体的类原创 2022-06-02 11:44:31 · 430 阅读 · 0 评论 -
KMP模式匹配算法详解(Java实现)
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n)文字来源:百度百科目录具体实现:原理:next数组:总结具体实现:x指针:用来做主串索引,y指.原创 2022-05-28 21:12:23 · 919 阅读 · 3 评论 -
数据结构——时间复杂度和空间复杂度
目录1.什么是时间复杂度和空间复杂度1.1时间复杂度1.2空间复杂度2.如何计算时间复杂度和空间复杂度2.1使用大O阶方法2.2计算一些常用算法的时间复杂度2.3计算一些常用算法的空间复杂度3.对复杂度有要求的算法练习题1.什么是时间复杂度和空间复杂度在了解两个复杂度之前,我们先来了解一下 什么是算法的效率。算法的效率分为两种: 时间效率和空间效率1. 时间效率被称为时间复杂度,它主要是衡量一个算法的运行速度2. 空间效率被称为空间复杂度,它主.原创 2022-04-23 13:35:52 · 2915 阅读 · 5 评论 -
数据结构 算法
什么是算法算法是解决特性问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。// 问题:解决 1 + 2 + 3 + ... + 100 的计算问题。两种算法实现// 算法1:循环相加int i, sum = 0, n = 100;for(i = 1; i <= n; i++){ sum = sum + i;}printf(" %d ", sum);// 算法2:求和公式int i, sum = 0, n = 100;sum = (原创 2022-01-11 16:43:28 · 855 阅读 · 0 评论 -
数据结构 数据类型
1.2 数据类型和抽象数据类型1.数据类型:是一个值的集合和定义在此集合上的一组操作的总称。数据类型和数据结构的关系 数据类型就是已经实现了的数据结构2、抽象数据类型:抽象数据类型(ADT)指的是从求解问题的数学模型中抽象出来的数据逻辑结构和运算(抽象运算),而不考虑计算机的具体实现。抽象数据类型 = 逻辑结构 + 抽象运算 例如,定义复数抽象数据类型ComplexADT Complex { 数据对象: D={ e1,e2 | ...原创 2022-01-06 17:12:33 · 898 阅读 · 0 评论 -
数据结构初识
第一章1.1数据结构基础概念数据是表征客观事物的可纪录可识别的符号集合。数据是信息处理的核心基础。数据结构和算法是计算机科学的基石。【基础概念重要术语】1.数据2.数据元素3.数据对象4.数据结构5.数据类型6.抽象是计算机科学的本质技术本章要点1.什么是数据结构?数据结构就是带有结构的元素集合。 2.数据的组织方法与效率密切相关,采用不同数据的组织方法其处理 效率不同 例:以电话号码查询为例:电话簿为线性表结构。可以用不同的结构 组织。 如数据随机存放,原创 2022-01-03 08:11:46 · 911 阅读 · 7 评论