自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 优先级队列(堆)

大根堆:每个节点的值大于或等于其子节点的值(根节点最大),称为大根堆。小根堆:每个结点的值小于或等于其子节点的值(根节点最小),称为小根堆。堆是一个完全二叉树结构,节点必须从上到下由左到右依次填充。最大堆和最小堆必须是全局满足,不能一会这个是最大堆,以后又变成了最小堆。对于索引为i的节点:找父节点索引:( i - 1 ) / 2找左子节点索引:2 * i + 1找右子节点索引:2 * i + 2。

2026-01-03 10:26:42 614 1

原创 二叉树进阶

本篇系统的对几个二叉树题目进行拆解,详细描述了算法流程

2025-12-28 14:46:55 526

原创 Java二叉树基础提升

!后序遍历:【左子树所有节点,右子树所有节点,根节点】从后往前:根节点,右子树的最后一个节点.......,左子树的第一个节点,左子树的第一个节点......

2025-12-27 20:22:28 774

原创 Java基础语法问答

如果一个类实现两个接口,且两个接口有相同的默认方法,类该如何处理?以下代码如何修改才能编译?非静态内部类隐式持有外部类的引用,这在什么场景下可能导致内存泄漏?匿名内部类能否有构造器?用于调用本类的其他构造器,必须在构造器的第一行执行。如果一个类同时有多个实例初始化块和构造器,执行顺序是什么?静态内部类在何时加载?它与外部类的类加载器是否相同?以下代码有什么问题?在 Java 中是什么?以下代码编译后相当于什么?以下代码是否有编译错误?以下两种初始化方式有何本质区别?以下代码是否编译通过?

2025-12-26 22:15:21 613

原创 二叉树基础习题

本篇来讲解几个二叉树的基础题目~

2025-12-26 21:58:24 376

原创 Java--二叉树概念及其基础应用

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看 起来像一棵倒挂的树,也就是说它是的。它具有以下的特点: 有一个特殊的结点,称为根结点,根结点没有前驱结点。

2025-12-25 16:03:43 846

原创 二叉树中两个指定节点的最近公共祖先

在二叉树中,两个节点的最近公共祖先(LCA)是指同时是这两个节点的祖先的最低节点(即深度最大的共同祖先)。例如,给定一个二叉树,节点A和节点B的LCA是树中第一个同时包含A和B在其子树中的节点。这个问题可以通过递归遍历树来解决,核心思想是利用后序遍历来检查节点之间的关系。该算法的时间复杂度为O(n),其中n是树中的节点数,因为每个节点被访问一次。空间复杂度为O(h),其中h是树的高度,主要用于递归栈。在C语言中,我们定义树节点结构体,并实现递归函数。以下是Java代码实现。类,包含值、左子节点和右子节点。

2025-12-24 21:17:04 419

原创 Java—栈与队列

双链表(双向链表)每个节点包含前驱和后继指针,实现栈时可灵活地在头部插入和删除节点(时间复杂度为O(1))。双链表实现队列时,在链表尾部插入节点(入队),在头部删除节点(出队),时间复杂度均为O(1)。队列的典型应用场景包括任务调度(如线程池)、消息队列、广度优先搜索(BFS)等。使用数组实现栈时,需维护一个指向栈顶的指针(通常用。数组大小固定,需处理栈满的情况。问题(即数组前部有空间但尾部已满)。)进行插入和删除操作。的数据结构,只允许在一端(称为。的数据结构,元素从一端(数组实现队列时,需解决。

2025-12-18 09:46:44 366

原创 Java-泛型

泛型通过类型参数、类型擦除、通配符和类型边界等机制,提供了强大的类型安全性和代码复用能力。理解类型擦除是深入掌握泛型行为的关键,而通配符(尤其是extends和super)则提供了处理不同类型集合时的灵活性。遵循 PECS 原则有助于正确使用通配符。虽然泛型有一些限制(主要是由类型擦除带来的),但它们极大地提升了 Java 程序的健壮性和可读性。

2025-12-13 20:52:14 1037

原创 Java数据结构-链表全面详解

超级详细讲解带你全面了解链表!!!

2025-12-13 14:50:18 835

原创 Java-顺序表

本篇详细介绍了Java中的顺序表的实现、分析了静态和动态顺序表的区别以及相关的代码案例~

2025-12-07 15:54:12 899

原创 力扣-电话号码组合

这是一个组合生成问题,我们需要为输入字符串中的每个数字位置选择对应的字母,并生成所有可能的序列。例如,输入 "23",可能的组合有 "ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"。,其中 $N$ 是映射到 3 个字母的数字个数,$M$ 是映射到 4 个字母的数字个数(例如数字 7 和 9)。给定一个仅包含数字 2-9 的字符串,我们需要生成所有可能的字母组合,其中每个数字映射到一组字母(类似于电话按键)。L是组合长度,主要用于递归栈和结果存储。

2025-12-05 13:29:46 959

原创 java-刷题-day2

这个是我的理论思路,但是还是会出现有小数的情况,所以我们需要改为double类型!那我们可以设想,如果算到第九次的所有距离那么一定会出现一个反弹(因为第九次降落我们才能算完九次,然而降落就会弹起来),也就是说我们只需要循环九次,最后一次弹起来的那个数我们记录下来就是第十次反弹的距离。上面是我的思路草稿,在第一次思考中,我发现这个规律和斐波那契数列是一样的,但是这样有过于单调了,于是我开始开辟第二种方法,果然让我想到了,通过对斐波那契概念的小改动完成,通过第三项为前二项之和来推断,思路可看上面的图。

2025-12-02 22:38:00 294

原创 java刷题-day1

今天是刚开始使用java刷题的第一天!以后我也会一直坚持分享每天刷的题目以及解题思路!

2025-11-29 21:37:52 470

原创 Java--String基础

在java中,String类为我们封装好了一系列便利的操作,可以让我们直接实现字符串相关的操作,让我们不需要像C语言那样子去手搓算法操作,十分的便利~ 今天我们就来看一下String一些比较基础的功能~

2025-11-28 19:27:56 836

原创 java小项目-1(此篇仅为参考,后续会出实现过程和详细步骤)

IGame接口 (interface定义了一组方法签名(没有实现)。用于规范行为,强制实现类必须提供这些方法。促进代码解耦。调用者(主程序)只依赖接口,不依赖具体实现类。是实现多态的基础之一。实现接口 (implements类通过implements关键字承诺实现某个接口。实现类必须提供接口中所有方法的具体实现。使用@Override注解是一个好习惯。在的中体现。变量声明为接口类型 (IGame),但实际赋值的是具体实现类 () 的对象。

2025-11-27 21:52:10 837

原创 Java--小项目实现1.0--图书管理系统

本篇为仅在编译器功能实现,没有做前端并且没有连接SQL,作为Java语法阶段的小项目。并且是基于单本书(一本书只能存在一本实现的!),如果有做一本书可以拥有多本的话可以看看框架之后自己尝试。话不多说,正式进入代码时刻!我们在写这个图书管理系统之前,还需要知道这个系统需要哪些东西组成!不然没法子开写!

2025-11-22 16:17:55 882

原创 Java--双指针1.0

双指针技巧是解决数组和链表相关问题的强大工具。通过选择合适类型的双指针(对撞、同向、快慢),可以高效地解决查找、去重、反转、查找特定位置(如中点)等多种问题。关键在于理解问题特性,并设计两个指针的移动规则来协作完成任务。(通常是指向数据结构中不同位置的索引或引用)来协同工作,从而高效地解决问题。双指针是一种在数组或链表等线性数据结构中常用的算法技巧。这一篇我们来详细探讨一下Java中双指针技术的应用。(同向指针),也可以以。(对撞指针),或者以。

2025-11-20 13:29:51 700

原创 力扣--两数之和(Java)

(尤其在元素非负的情况下)。因此,先过滤掉这些元素可以缩小搜索范围,减少不必要的比较。这个是我目前认为一个比较简单容易理解的方法(还未开始学习数据结构),如果有什么可以改进的地方欢迎·评论区补充~!以下是完整的 Java 代码,实现了上述思路。代码包含详细注释以帮助理解。的元素”,这基于一个优化假设:如果一个元素的值大于。,那么它与另一个正数相加时,和可能会超过。我这个思路核心是“淘汰数组中值大于。

2025-11-13 23:13:17 787

原创 Java——接口

它强制实现类提供特定的方法,是实现多态(通过接口引用调用不同实现)、降低耦合(依赖接口而非实现)的关键。使用时要理解其抽象方法、默认方法、静态方法、私有方法以及常量,并注意实现所有抽象方法、避免访问权限冲突、解决默认方法冲突等易错点。默认方法允许在不破坏现有实现的情况下,为接口添加新的功能。接口的静态方法通常用于提供与该接口相关的工具方法或工厂方法。可以声明接口类型的变量,并将其指向实现了该接口的任何类的对象。在重写的方法中,可以提供全新的实现,也可以使用特殊语法。是一个空的标记接口,没有任何方法。

2025-11-08 16:08:59 1008

原创 java——抽象类与抽象方法

在Java中,抽象类和抽象方法是面向对象编程的核心概念,用于实现代码重用和多态性。抽象类不能被实例化,它定义了一个模板,子类必须实现其抽象方法。抽象方法是没有方法体的方法,必须在子类中被重写。下面我将从定义、特点、使用场景、常见易错点及代码案例等方面进行详细解释。结构清晰,逐步展开。

2025-11-04 10:36:43 832 1

原创 从0学Java--day7

封装:保护数据,通过private字段和public方法控制访问。易错在忘记private或setter验证。继承:子类复用父类代码,可覆盖方法。易错在super调用或方法签名。多态:同一方法不同实现,依赖覆盖和向上转型。易错在类型转换或静态方法。以上是一些基础概念的介绍,真正掌握还需要多在实际敲代码中练习。

2025-10-31 20:45:59 1037

原创 day6.5补充

static修饰的成员变量,称为静态成员变量,静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共 享的。被static修饰的成员方法称为静态成员方法,是类的方法,不是某个对象所特有的。代码块的执行顺序是静态-->实例-->构造方法。在这些里面还是分为定义先后顺序的。本篇为上期类与对象的补充知识。

2025-10-30 15:33:38 205

原创 从0开始学Java--day7--类与对象-初

类与对象关系类是模板(设计图),对象是实例(具体产品)一个类可创建多个对象实例化注意事项未初始化成员变量使用默认值(null0false等)对象未被引用时成为垃圾,由GC回收this核心用法this.成员变量this(...)返回当前对象:方法返回this构造方法最佳实践始终保留无参构造(或显式定义)参数校验(如金额非负)避免循环调用使用this(...)减少代码重复通过本教程的3000+字详细解析和7个实战练习,您已掌握Java面向对象的核心机制。

2025-10-29 22:10:28 666

原创 从0开始学java--day6.5

习题举例完了,这些都是比较基础的操作,但是平时也不能不复习,否则若干天之后你连看都看不懂~一定要记住学习是一个积累的过程~可以看到原本指向的是arr2,里面是4,5,6,7,经过修改之后1地址值变成7,0地址值变成5,都是运行成功没有问题的~然后是Java个数组名指向了同一个元素的时候,无论使用哪一个数组名进行操作都可以对指向的那个数组进行修改!这样可以模拟一个数组的样式~一维数组的差不多就是这个样子啦,来做点题目吧~再来看一个小题目:将数组中的每一个元素都扩大两倍。然后就是一个很好玩的代码~来看看吧。

2025-10-25 14:57:34 273

原创 从0开始学Java--day6-数组(部分)+数组内存

数组传递的本质:当数组作为参数传递给方法时,传递的是数组引用的副本(不是数组数据的完整拷贝)。因此:在方法内部修改数组元素(如)会直接影响原始数组。在方法内部重新分配数组(如)不会影响原始数组,因为新引用只作用于方法内的副本。为什么是基础:Java中的所有对象(包括数组)都采用这种“值传递引用”机制。数组是固定长度的对象,索引从0开始。关键术语引用:指向数组在内存中位置的指针。副本:方法参数获取的是原始引用的复制品,而不是原始引用本身。

2025-10-24 18:44:41 641

原创 从0开始学Java -- day5 - 方法基础

Java的方法和C语言的函数差不多,但是还是有比较多的地方不太一样的~

2025-10-21 21:54:17 841 1

原创 从0开始学Java day--4

在循环内创建大对象(如)会导致内存泄漏,应在外层初始化。遍历集合时修改(如删除元素)会抛出,使用Iterator解决。循环内声明的变量只在循环内有效,外部访问会导致编译错误。

2025-10-20 18:31:17 983

原创 从0开始学Java--day3-运算符

这些就是Java常用的一些操作符了,如果有些缺漏欢迎补充~~ 后续如果遇到新的也会及时更新补上!算术运算符用于执行基本的数学运算,例如加法、减法、乘法、除法等。掌握了这些就可以学习循环操作然后开始写简单的程序了~逻辑运算符用于组合多个条件,通常用于控制流程(如。赋值运算符用于为变量赋值,可以结合算术或位运算。关系运算符用于比较两个值,返回布尔值(条件运算符是唯一的三元运算符,用于简化。用于检查对象是否为特定类的实例。)运算符用于对变量加1或减1。运算符可以用于字符串拼接。

2025-10-18 08:47:34 144

原创 从0开始学java--day2

今天是学习Java数据类型,学起来感觉还是和C语言差不多的,但是总是觉得比C语言更简单,写起来特别爽,感觉已经深深爱上了Java!这些+是拼接,是字符串拼接类型最小值(如Byte.MIN_VALUE)再拼接一个字符分开最后拼接最大值(如Byte.MAX_VALUE),就可以打印出来最小值~最大值更直观看到取值范围。其实这些代码里面让我觉得最厉害的是字符串拼接和字符串与整数互换的操作,在C语言中还是有一点难度的,但是在java里面居然就是随随便便写一下就可以做到!//拼接·字符串 没有\0~

2025-10-16 17:20:51 157

原创 从0开始学java——day1

但是进入到java中,这种创建函数以及输出的方式会变得更加繁琐,不过毕竟是一个基于c的一个语言,在语法上几乎和c是一样的,只是部分地方不太一样~ 先来看看java中的hello world吧~修饰方法:该方法属于类本身,而不是类的实例。

2025-10-15 22:05:22 273

原创 c文件操作

文件分为文本文件和二进制文件,操作流程通常包括打开、读写、关闭三个步骤。函数结合使用,用于设置文件指针的位置。在C语言中,文件操作主要通过标准库。这三个宏用于文件定位操作,通常与。

2025-10-04 06:15:28 321

原创 C语言结构体传参

在C语言中,结构体传值是将整个结构体变量的副本传递给函数。这种方式会复制结构体的所有成员到函数的栈帧中,因此函数内对结构体的修改不会影响原始结构体变量。结构体传址通过传递结构体指针(地址)实现,函数内通过指针直接操作原始结构体数据。任何修改都会反映到原变量上。若需传址但禁止修改,可用。

2025-09-13 16:19:25 305

原创 C——结构体内存

/double类型是8字节 需要八个字节 double是这三个最大的所以第二个也是8 第三个double确实占8字节 所以 double就是8 8 8。这个图片有一点问题,但是我好想不会更改,在这里指出一下,这种方式寻找次数不会多太多,是牺牲空间换时间的!下面的代码每一个类型都可以写三个字节数,1.所需要的字节 2.几个类型中最大的字节 3.所占的字节。在指针中,内存是一块连续的空间,但是在结构体中有些许的不同,一起来看一下吧~,8+1+4=13,取大的就是16。

2025-09-10 07:47:37 321

原创 整数和浮点数在内存中的存储

一律采用补码形式存储注意有符号与无符号类型的区别整型提升规则:有符号数按符号位提升,无符号数补0。

2025-09-07 21:04:37 652

原创 C:大小端

假设有一个数是0x12345678 ,这个数包含了四个字节,分别是 0x12 0x34 0x56 0x78 这个就是字节序,但是这几个字节该怎么存放呢?那根据大端的概念,低转到高,高转到低也就是权重大的在前面(位数大的在前)就和我们平时书写数字一样的,0x12345678的大端结果就是12345678。这里高位地位是和数学相关的,就比如上面的0x12345678 8是个位7是十位以此类推,也就是说数据越靠前的数位数越大,越在后面越小.大端是将数据的低位转移到高位,数据的高位转移到低位.

2025-09-03 09:03:35 341

原创 深入理解c字符串函数的底层原理

C语言的字符串函数和内存函数虽然比较简单,但是实际上使用起来还是有点坑的,这一篇文章就来深入一下底层的实现,来看看原理是什么。

2025-08-31 17:17:13 667

原创 C指针入门到进阶

这里是c指针入门到进阶,更加深入精通一点的我会单独做一篇出来详细讲,不然文章会太长了影响观感,下面有一些重点我也会挑出来单独做一篇来讲原理和多个题目实现。声明:以下部分举例根本目的是为了更方便的让大家理解指针,无任何不良引导!

2025-08-20 19:49:03 760

原创 C语言冒泡排序逻辑及实现

冒泡排序是一种基础的排序算法,可以通过数组和指针两种实现方式,可以更深入地理解数组和指针的关系。注意避免常见的错误,如数组越界和指针运算错误,以确保算法的正确性。

2025-08-14 15:54:36 231

原创 C语言相关操作符

以下是C语言操作符的超级详细分类解析,包含每个操作符的意义、用法、示例代码及任务实现。

2025-08-07 14:21:55 915

空空如也

空空如也

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

TA关注的人

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