自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 Java-Collection集合极其遍历

Collection是Java中的一种单列集合·,即每次添加只能添加一个元素。它是单列集合的祖宗接口,其功能是全部单列集合都可以使用的。

2024-04-24 20:21:26 421

原创 Java-Lambda表达式

Lambda表达式简化了函数式接口匿名内部类的书写,不同于面向对象的思想特点,它是一种函数式编程的思想,强调做什么(方法)而不是谁(对象)去做。对于从大到小的排序,可以另写一个cmp规则实现排序。语法形式:()->{ }

2024-04-21 18:03:15 327 1

原创 Java-常用API-2

Object类中提供的equals比较方法有空指针会直接报错,这时就需要用到Objects类中的方法。验证字符串的一种规则,或在文本中查找满足需要的内容,表达式类型为String。拥有非常高的上限,可以用来处理超过long long的整数。预定义字符(Java中,\\表示\)常用于小数的精确计算。

2024-04-17 22:06:26 1037

原创 Java-常用API-1

【代码】Java-常用API-1。

2024-04-16 23:17:48 784

原创 Java学习day6-集合

集合指一组用于储存和操作数据的类和接口,提供各种数据结构和算法,以在程序中高效地管理和操作数据特点:与数组相比,集合可以自动扩容,只需向其中添加元素即可(与C++vector类似);数组可以存储基本数据类型与引用数据类型,但集合只可储存引用数据类型,如果要存储基本数据类型,需要将其变为对应的包装类。

2024-04-06 15:50:41 166

原创 Java学习day5-面向对象2

快捷键:alt+insert(+Fn)->构造函数->全选构造带参方法,不选择则空参构造。插件:ptg,安装后右键单击,倒数第三个则为一键构造所有set/get函数。引用数据类型:数据存储在其他空间中,自己空间中存储的是地址值。其余对象数组的查找、删除、插入操作与c/c++类似。基本数据类型:数据值存储在自己的空间中。特点:赋值给其他变量也是赋的真实的值。特点:赋值给其他变量赋的是地址值。和c/c++的结构体数组差不多。

2024-04-03 22:22:19 252

原创 欧拉路径&欧拉回路

求取一个图的欧拉路径,可以利用dfs,每遍历一条边就将这条边消去,当遍历到的顶点度数为0时则将其入栈,最后一个个出栈,就是欧拉路径经过的顶点顺序。欧拉回路,指遍历图时通过图中每条边且仅通过一次,最终回到起点的一条闭合回路,适用于有向图与无向图,如果不强制要求回到起点,则被称为欧拉路径。1->2->3->4->5->1即为一条欧拉回路,欧拉图可以有多个欧拉回路,其起点不唯一。1->2->3->1->5->4->3即为一条欧拉路径,1,3为起始点。- "01" 从第 1 位开始输入。判断图是否具有欧拉路径。

2024-04-03 20:37:08 281

原创 Java学习day4-面向对象具体学习1

this函数的用法上一篇有写,具体就是用来区分成员变量(全局变量)与局部变量,当变量名相同时,调用全局变量时须加this.,否则调用局部变量。定义规则:一个Java文件中可以定义多个class类,但只能定义一个public类,且public修饰的类名必须为文件名。如果我们不进行构造方法的定义,系统将给出一个默认的无参的构造方法,定义后则不再提供默认构造方法。所以无论是否使用无参构造或有参构造,都建议将两种方法都写入类内。如果类里面只有有参构造,则再创建对象时须输入变量,即如果类里。定义构造方法步骤如下。

2024-04-02 23:20:15 401

原创 Java学习Day3

一道简单练习题,对编号进行随机排名在Java中,数组传递是按引用传递,所做的修改会直接反应到原数组上运行结果。

2024-03-25 22:56:37 344

原创 Java学习day2

修饰符][static] 结果类型 函数名([参数类型1 参数1],[参数类型2 参数2]...)

2024-03-24 22:19:58 435

原创 Java学习day1

在此电脑界面右击,属性-高级系统设置-环境变量-Path中新建要快捷打开的文件的路径,此时在cmd窗口中直接输入cd+文件名,可直接打开而不用多级一步步打开。:进入此目录文件夹(此时再操作的就是Game文件夹):查看当前路径下的内容(此时展示D盘内容目录)(D:):盘符切换,示例表示由C盘切换到D盘。:回退到上一级目录(此时回退到D盘)按回车或点击确定,打开cmd窗口。按下win+R键,输入cmd。

2024-03-22 22:36:08 264

原创 数据结构-查找与排序

数据结构再往后就是比较零散的各种操作,查找与排序是其中最常出现的,今天来总结一下常用的查找与排序所用的方法。

2024-02-24 01:21:53 675 1

原创 数据结构-关键路径

在AOV网的基础上,如果用对应边来表示活动持续时间,这种有向图被称为AOE网在AOE网中,入度为0的为源点,出度为0的为汇点,整张网看做是一件事情完成的过程,那么这两个点就是事情的开始和结束。每个活动持续的时间之和称为路径长度,从源点到汇点具有的最大长度的路径就成称为关键路径,关键路径上的活动称为关键活动。关键路径用来计算整个活动总耗时最短的情况。

2024-02-23 00:26:57 692

原创 数据结构-拓扑排序

拓扑序列的定义为:在一个AOV网中,如果从顶点i到顶点j之间有一条路径,则顶点序列中i必须在j之前。这样的顶点序列称为拓扑序列。拓扑排序,就是将一个有向图构造成一个拓扑序列的过程。

2024-02-21 23:25:06 722

原创 数据结构-邻接链表

邻接矩阵是运用较多的一种储存图的方法,但如果一张网图边数较少,就会出现二维矩阵中大部分数据为0的情况,浪费储存空间为了避免空间浪费,也可以采用数组与链表结合的方式来存储图假设有这样一张图我们可以先用一个数组来存储顶点;在每个顶点后面,可以采用链式结构,来记录每个顶点与那些顶点相连,就好比一个车头后面跟着几节代表信息的车厢如v1这个顶点,就可以采用如图的结构记录连接信息这种存储了一个网图信息的链表集合就称为邻接链表。

2024-02-21 00:10:32 553

原创 数据结构-最短路径(Dijkstra算法与Floyd算法)

对于网图来说,最短路径是指两顶点之间经过的边上权值之和最少的路径,其路径上第一个点记为源点,最后一个为终点。计算最短路径有两个经典算法,即迪杰斯特拉(Dijkstra)算法与弗洛伊德(Floyd)算法。

2024-02-19 22:26:30 655 1

原创 数据结构-邻接矩阵的创建与遍历

上篇文章已经介绍了邻接矩阵的具体作用与如果利用邻接矩阵寻找相邻顶点,这次介绍重点为邻接矩阵的创建与两种遍历方式。

2024-02-19 00:24:18 788

原创 数据结构-邻接矩阵

邻接矩阵,是表示图的一种常见方式,具体表现为一个记录了各顶点连接情况的呈正方形的矩阵。假设一共有以下顶点,其连接关系如图所示那么,怎么表示它们之间的连接关系呢?我们发现,各条边所连接的都是两个顶点,联想到我们之前学过的能表示两个量直接关系的数据结构,二维数组就是一个不错的选择。

2024-02-17 00:37:04 1218

原创 数据结构-双指针法

双指针法是一种可以在O(n)时间复杂度内解决数组、链表、字符串等数据结构相关的问题的方法。核心思想为使用两个指针在不同位置遍历数组或链表,从而实现特定操作。常见的双指有1.快慢指针:快指针每次移动两步,慢指针移动一步,用于判断链表是否有环或者找到链表中间结点等;2.左右指针:左指针指向数组开头,右指针指向结尾,用于解决二分查找、两数之和等等;3.滑动窗口:维护一个特定窗口,用两个指针表示左右边界,寻找符号要求的子序列;

2024-02-16 00:24:49 646 1

原创 数据结构-哈夫曼树

哈夫曼树,指带权路径长度最短的二叉树,通常用于数据压缩中什么是带权路径长度?假设有一个结点,我们为它赋值,这个值我们称为权值,那么从根结点到它所在位置,所经历的路径,与这个权值的积,就是它的带权路径长度。比如有这样一棵树,D权值为2从根结点到D的路径为2,则此结点带权路径长度为2x2=4当一棵二叉树所有结点的带权路径之和最小时,这棵树就被称为哈夫曼树。

2024-02-15 00:32:34 778 1

原创 数据结构-字符串哈希

对于不是绝对顺序的匹配,可以为每一个字母设置单独的取哈希值的规则,并且尽量保证各字符哈希值直接没有倍数关系,否则最终和会造成哈希值重复。在字符串的比较中,除了暴力匹配,还可以利用转化的思想,将一串字符串映射为唯一整数,常见的是利用它们的ASCII码表进行一系列运算。如果是有关顺序的绝对匹配,我们可以遍历字符串中每个字符,令不同位置的字符ASCII码乘以不同的基数次幂,再依次相加。如abc,如果基数为131,则哈希值='a'*131^2+'b'*131^1+'c'*131^0=2105375。

2024-02-09 00:34:08 442 1

原创 刷题记录*

结构体数组则可以在按id、时间排好序后用一个指针记录相同的id区间,在此区间内判断赞数是否达到要求,需要注意的是防止一个id多次满足导致多次输出,和顺序统计同一id时,一个时间区间不满足但另一个时间区间满足的情况。首先将原先的岛屿数量记录下来,具体方法为在遍历到#时,如果没有被标记,则岛数加1,同时对它周围进行广搜,它和所有由它推广到的#,即同一片陆地的#坐标用标记数组标记。

2024-02-08 00:34:21 368

原创 刷题记录-二分

如果从中按将其分开1-2-6...这条对称轴分开,观察左半边,可以发现每条数字斜线上的值是单调递增(除第一条)的,而每条斜线上的数字正是从C^m_2m开始递增的(m为第n条斜边-1),即C^m_2m+1,C^m_2m+2...题目范围是N不大于1e9,根据规律可得出所求值位置均在第1-16条斜边之内,所以可以从16开始遍历,每条斜边上的值都是单调递增的,利用二分查找可以提高运算效率。即找到最少能形成的牌组(a[n]的最小值),和最多能形成的牌组(a[n]加上b[n]后最大的值)

2024-02-07 00:38:53 394 1

原创 最小生成树(MST)-克鲁斯卡尔算法

最小生成树,指在连通图中找到的一棵包含所有顶点,且总权值最小的树。假设有三个点ABC,每两个点间的距离各不相同,分别为A-B:1A-C:3B-C:4如图所示所有可能生成树的形式在所有树中,总权值(此例中体现为距离和)最小的那棵树就是最小生成树。所以,最小生成树有以下特点:1)包含圆图中所有顶点,并且通过其中的边将这些顶点连接起来,形成一个无环的连通图;2)最小生成树的边的数量等于顶点数减一,即n个顶点,有n-1条边;3)最小生成树的总权值时所有边权值之和的最小值。

2024-02-05 23:12:15 361 1

原创 数据结构-并查集(dst)

通过将a的父结点设为b,这样就将a,b合并到了同一个集合里,再次查询时,通过判断祖宗结点是否一致,来实现查询操作。由于b的祖宗结点是自身,a的祖宗结点已经被设为b,所以可以查询得到二者属于同一个集合。:给定两个元素,通过查找得出各自的祖宗结点,将其中一个的祖宗结点的父结点设为另一个的祖宗结点,就将两棵树实现了合并。假设合并的是4,6元素所在的集合,向上找到根结点1与8,再将其中一个根结点的父结点指向另一个,就实现了树的合并。假设有a,b,c,d,e四个元素,在最开始它们都是独立的结点。

2024-02-03 00:19:27 388 1

原创 动态规划(DP)

将问题分解为每次选择是否采这株药的问题,对于每株药,都有采与不猜两种选择。

2024-02-02 00:10:55 366

原创 数据结构-二叉树深度计算及平衡二叉树(AVL树)

LR型:取最后一个结点作为双亲,将双亲作为左孩子,双亲的双亲作为右孩子,原先的左孩子作为双亲的右孩子,右孩子作为双亲的双亲的左孩子。RL型:取最后一个结点为双亲,原先的双亲作为自己的右孩子,双亲的双亲作为左孩子,自己的右孩子作为双亲的左孩子,左孩子作为双亲的双亲的右孩子(和上面反过来),同先LL调整再RR调整结果相同。计算二叉树的深度一般利用后序遍历法(左->右->根),先递归求出左右子树深度,再取最大值加1返回给双亲树,这样求出的其实是树的高度,但由于深度与高度数值相等,所以可以直接利用。

2024-02-01 01:39:43 600 1

原创 数据结构-前、中、后缀表达式

中缀表达式,指的是我们日常运算中所用的、将运算符号写在要运算的数字中间、利用括号等进行辅助标明优先级的计算式。如(3+2)*9/(4-1)这种运算式。而后缀表达式(又称为逆波兰表达式),则是将运算符置于要计算的数字之后的运算式(3 + 2后缀表示就是3 2 +),运算符作用于它前面的两位数字,计算式严格按照从左至右的顺序,不再借用括号表明优先级。相比于中缀表达式,后缀表达式是更方便于计算机求解的一种式子。如例式可化为3 2 + 9 * 4 1 - /

2024-01-31 00:08:13 483

原创 单调栈、单调队列及用数组模拟链表操作

入栈过程为,首先比较入栈元素与栈顶的大小,如果大于栈顶则,说明距离栈顶元素最近的值是将入栈的此元素,将结果记录在一个数组中,此数组记录的就是第i个元素后第一个大于a[i]的值的下标(设为result数组,则result[栈顶的下标]=入栈元素的下标),并将栈顶弹出,直到栈顶大于此元素,将其入栈;接着,每滑动一次,将数列要出队的执行出队,出队规则为,如果它不是之前队列最大的元素,则在之前入队时已经被弹出,已经出队完成,不必操作,如果是,则将其出队;完整代码如下(此代码模拟顺序链表插入)

2024-01-30 00:46:29 342 1

原创 数据结构-二叉排序树(BST)

二叉排序树的删除有些麻烦,如果要删除的结点为叶节点,可以直接将其双亲的左右子树充重置为NULL再把这个结点free掉,如果是带有单子树的可以将其子树直接取代待删结点的位置,双子树的则需要先找到子树中代替其的结点的值,再根据情况将子树重接。对于查找数据的操作,如果是顺序线性表,可以用折半等方法来实现,但对于插入与删除需要耗费大量时间。若左子树不为空,则左子树上的所有数据均小于它的根结点数据;若右子树不为空,则右子树上的所有数据均大于它的根结点数据;由于它的性质,二叉排序树对于数据的查找更为方便。

2024-01-28 23:32:18 329

原创 数据结构-线索二叉树

在二叉树中,除根结点外,其余节点均有一个指针指向它,如果有n个结点,那么一共有n-1个有指向的指针。利用这n+1个空指针,令它们指向遍历二叉树时的前驱和后继,就是创建一棵线索二叉树。如果我们把它看成一种线性结构,在这个遍历过程中,D空出来的两个指针可以指向它的前驱(NULL)和后继B,B已经指向了DE,略过看E,令E的两个空指针指向它的前驱B和后继A...以此类推,就创建了一棵线索二叉树。利用递归和回溯,用数组记录位置是否被占据(注意上下对角线的表示方法是行-列+边-1,下对角线表示为行+列)

2024-01-27 00:12:38 396

原创 数据结构-二叉树的遍历(代码实现)

遍历方法共有四种,前篇已经介绍过,性质上分为深度优先和广度优先。

2024-01-25 21:49:27 1222

原创 数据结构-二叉树(基础定义与创建)

不同于线性一对一的数据结构,树是一种一对多的数据结构,用来存储和组织天然地具有层级结构的数据的有效方式。假设一个班级有一个老师和n个学生,每m个学生由一个组长管理,那么一个老师对应若干个小组长,每个小组长对应m个学生,这种管理结构就是一种树状结构。树是结点的集合,每个结点包含一些数据,有些包含指向其他结点的链接或引用,顶部结点称为根,每个结点的子结点称为它的“孩子”,它拥有的子结点数称为它的“度”。那么图中B,C就是根的“孩子”,A为B,C的“双亲”,度为2。

2024-01-24 22:32:45 374 1

原创 数据结构-字符串的匹配(暴力&kmp)

BF算法&KMP算法

2024-01-24 00:37:32 376 1

原创 数据结构-双链表

双链表里面,想要在头结点之后插入一个节点,需要把新节点的next指向头结点原来的下一个节点,新节点的pre指针指向头结点,头结点的next指针指向新节点,头结点下一个节点的pre指针指向也新节点,比如在12中间插入3,1为头结点,需要把2的next指针指向3,2的pre指向1,1的next指向2,3的pre指针指向2。同单链表类似,需要将目标节点的前一个节点的next指向目标节点的后一个节点,目标节点的后一个节点的pre指针指向目标节点的前一个节点。

2024-01-23 21:33:27 377 1

原创 数据结构-单向链表

链表是一种线性数据结构,由节点组成,每个节点包括数据和指向下一个节点的指针,不同于数组的顺序存储,链表是通过指针进行连接的,插入与删除都更为灵活。节点的删除需要用循环找到删除目标,然后将目标的前一个节点的next直接指向目标的后一个节点的地址,实现节点的剔除。

2024-01-22 23:46:34 366 1

原创 学习总结4

在看网课学习c语言中,这段时间完成了老师布置的实验和随堂测试,实验成绩尚可,随堂勉强理想,还需要继续努力。这段时间刷题较少,更多的是看理论知识,但题量我会在接下来的时间里跟上来。*学会了while循环、do while循环。*了解了字符与ASCII码之间的转换输出。*更加了解了各符号的运用与执行顺序。*学会了switch分支语句。#利用ASCII码输出前驱字符和后继字符。#对整除和取余符号的运用。

2023-11-05 23:53:03 42

原创 学习总结3

这段时间在做数组的题,相当于输入输出感觉更容易学一点,学会了倒序输出、复制数组的一部分到另一个数组、遍历数组去重。同时在看c语言的课程,学会了while循环,也在学其他的排序方式。#遍历去重排序(但这个代码目前存在一些问题,正在调试。#将一个数组的一部分复制到另一个数组。

2023-10-29 23:55:39 38 1

原创 学习总结2

进步:对数组的了解更多了点,oj上新生输入输出题除了憨憨发牌员其他的都没有问题,数组题做了三分之一,循环题也在慢慢摸索着做。#正在解决中的问题,因为实验被暂时搁置了,但是做完实验会尽快解决。等等,还有许多小的进步:逻辑更清晰了;编程习惯更好了...#知道了比较大的数组要定义为全局变量。努力在三周内掌握所有基本语法。

2023-10-26 00:06:10 42

原创 学习总结1

可以解决部分简单的有趣的小问题,像打印超级马里奥、判断最大最小值、判断奇偶、交换数值、数组的使用等等;另外,格式真的很重要,经常漏写一个括号或者分号就会让整个程序运行不起来,所以要养成良好的语言习惯!vscode的页面更一目了然一点;等等等等,c语言给我一种在理性的逻辑框架里随心所欲构造世界的自由感和成就感。*感想:c语言还是要自己多实践,单听课很容易忘掉学过的内容;*技能:掌握了简单的输入输出、for循环和if判断语句;目前正在慢慢学习更深入的东西。#绝对值最小数与最后一个交换。学长学姐们帮助了我很多。

2023-10-22 23:53:04 36

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除