自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JAVA内部类

这种限制是为了确保局部内部类对象的生命周期与方法的执行期一致,防止在方法执行完毕后,局部内部类对象仍然持有对局部变量的引用,导致内存泄漏。内部类可以有不同的修饰符,比如可以是私有的(private),保护的(protected),默认的(包内访问),或者静态的(static)。成员内部类对象隐含地持有其外部类对象的引用,因此可以访问外部类的所有成员,包括私有成员。匿名内部类是没有名字的内部类,它通常用于创建某个接口或类的子类或实现类的对象,而无需显式定义这个子类或实现类。

2024-04-29 20:46:05 192

原创 JAVA——抽象类

首先,普通类是可以被实例化的类,它们具有具体的实体,可以直接创建为对象,并且包含完整的实现细节。抽象类是对类的抽象,它表示的是“这个对象是什么”,而接口是对动作的抽象,表示的是“这个对象能做什么”。同时,抽象类可以包含抽象方法,这些抽象方法只有方法的签名,没有具体的实现,需要在子类中实现。抽象类主要用于定义一些通用的属性和方法,这些通用方法可以是具体的,也可以是抽象的。总的来说,Java中的抽象类是一种强大的工具,它允许我们定义通用的属性和方法,并在子类中实现具体的行为,从而提高了代码的复用性和可维护性。

2024-04-29 01:36:12 1127 1

原创 JAVA的权限修饰符

这些权限修饰符在Java编程中非常重要,它们帮助程序员控制代码的可见性和访问范围,从而提高代码的安全性和可维护性。根据具体的场景和需求,可以灵活地选择适当的权限修饰符来修饰类、方法或变量。Java中的权限修饰符是用来控制类、方法、变量等元素在程序中的访问权限的关键字。

2024-04-29 01:18:44 208

原创 JAVA——Final

在Java中,final是一个关键字,它可以用来修饰类、方法和变量。使用final关键字可以表示某些内容是不可变的或者不能被继承的。以下是final。

2024-04-29 01:12:24 182

原创 JAVA——包

包提供了访问控制机制,可以决定哪些类、方法或字段是公开的(public),哪些是受保护的(protected),哪些是默认的(包级私有),以及哪些是私有的(private)。通过将相关的类组织在同一个包中,可以提高代码的可读性和可维护性。:包使得代码更加模块化,每个包可以看作是一个独立的模块,具有特定的功能和职责。总之,包是Java编程中非常重要的概念,它有助于组织和管理代码,提高代码的可读性、可维护性和可重用性。:包为类提供了一个命名空间,使得具有相同类名的类可以存在于不同的包中,从而避免了命名冲突。

2024-04-29 00:49:47 338

原创 JAVA的多态

在Java中,多态(Polymorphism)是面向对象编程的三大特性之一,它允许一个引用变量在运行时引用不同类的对象,并根据实际对象的类型来执行对应的方法。这样,使用接口类型的引用就可以引用实现了该接口的任何类的对象,并在运行时调用其实现的方法。:子类可以重写父类的方法,即子类可以提供一个与父类方法签名相同的方法。当使用父类类型的引用指向子类对象,并调用这个方法时,会执行子类中的重写方法,而不是父类中的方法。注意,为了实现多态,子类重写的方法的访问权限不能低于父类中被重写方法的访问权限。

2024-04-29 00:20:04 201

原创 JAVA的继承

在Java中,继承是一种机制,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。这种关系在类之间建立了一个层次结构,使得子类可以重用父类的代码,并添加或覆盖父类的行为。继承是实现代码复用和面向对象程序设计的重要部分。

2024-04-29 00:05:35 537

原创 Java的static

静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象访问(但是这是不推荐的)。这有助于节省内存空间(因为静态成员在内存中只有一个拷贝)并提供一种在不需要创建对象的情况下访问类级别功能的方式。静态方法不能访问类的非静态成员(变量和方法),因为非静态成员需要类的实例才能存在。静态内部类不持有外部类的引用,因此不能访问外部类的非静态成员。静态内部类可以独立于外部类存在,并且可以有自己的静态和非静态成员。

2024-04-29 00:00:50 216 1

原创 JAVA构造方法

构造方法的作用:创建对象的时候,由虚拟机自动调用,给成员变量进行初始化的。构造方法有两种,各种的作用是什么无参数构造方法:初始化对象时,成员变量的数据均采用默认值。有参数构造方法:在初始化对象的时候,同时可以为对象进行赋值。构造方法的注意事项任何类定义出来,默认就自带了无参数构造器,写不写都有。一旦定义了有参数构造器,无参数构造器就没有了,此时就需要自己写无参数构造器了。建议在任何时候都手动写上空参和带全部参数的构造方法。

2024-04-02 06:57:42 482

原创 JAVA面向对象

在Java编程语言中,类(Class)是一个用户定义的数据类型,用于创建对象。类是对象的蓝图或模板,它定义了对象的属性(即变量或数据成员)和方法(即函数或操作)。通过类,我们可以创建具有相同属性和方法的多个对象。

2024-03-26 22:08:24 860

原创 Java的方法

在Java编程语言中,方法(Method)是它定义了对象可以执行的操作或完成的任务。方法是执行特定任务的代码块,可以包含参数(用于输入)和返回值(用于输出)。:方法的修饰符,如publicprivateprotectedstatic等。:方法执行后返回的数据类型。如果方法不返回任何值,则使用关键字void。:方法的名称,用于在代码中引用该方法。:方法的参数,用于向方法传递值。参数是由参数类型、参数名和参数变量组成的列表。:包含执行特定任务的Java语句。:方法执行完毕后返回的值,如果方法的返回类型不是。

2024-03-25 20:07:37 726

原创 JAVA运算符

Java中的运算符是用于在程序中执行各种操作的符号。这些运算符可以对一个或多个变量进行操作,并返回结果。

2024-03-24 21:54:02 371

原创 JAVA入门第一步2.0

Java中的关键字是Java编程语言中预先定义并保留的单词,它们具有特殊的含义,不能用作变量名、方法名或类名等标识符。以下是我查到的Java中的一些主要关键字:由于我还在入门,所以所接触的关键字不多,还只有数据类型。

2024-03-22 21:00:24 871

原创 环境变量配置

在配置Java环境变量时,通常需要先设置JAVA_HOME变量指向JDK的安装目录,然后将JDK的bin目录添加到PATH变量中。这样,当你打开CMD窗口并输入相关Java命令时,系统就能够正确地找到并执行这些命令。然而,如果每次都需要输入完整的路径来打开QQ,可能会觉得有些麻烦。配置环境变量后,可以在CMD中的任何位置直接输入。在CMD中打开QQ界面,首先需要知道QQ.exe文件的完整路径。完成这些步骤后,你就应该可以在CMD中的任何位置直接输入。来启动QQ,而无需先切换到QQ.exe所在的目录。

2024-03-21 22:10:57 381

原创 JAVA入门第一步

JAVA入门级操作

2024-03-21 21:48:47 782

原创 动态规划题目练习

棋盘上 A 点有一个过河卒,需要走到目标 B 点。同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。餐馆虽低端,但是菜品种类不少,有 N 种 ((N≤100),第 i 种卖 ai​ 元 (ai​≤1000)。现在要求你计算出卒从 A 点能够到达 B 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。棋盘用坐标表示,A 点 (0,0)、B 点 (n,m),同样马的位置坐标是需要给出的。对于 100% 的数据,1≤n,m≤20,0≤马的坐标≤20。

2024-03-21 20:02:37 775

原创 高精度加减乘除各类题目

FFT,即快速傅里叶变换(Fast Fourier Transform),是一种高效的计算离散傅里叶变换(DFT)和其逆变换的算法。DFT是将信号从时间域变换到频率域的一种数学工具,广泛应用于信号处理、图像处理、数值分析和物理学等领域。然而,直接计算DFT的复杂度是O(n^2),对于大数据量来说效率很低。FFT通过利用系数W的周期性和对称性,将DFT中一部分重复的计算合并起来,使得算法复杂度降低到O(n log n),从而大大提高了计算效率。FFT的基本思想是分治策略。

2024-03-20 21:15:38 1158

原创 EasyX的使用(详解版)

文件夹内新建文件夹“ras”,将需要的图片复制粘贴在文件夹内。" "中的路径来源,首先双击图形测试,找到该文件夹打开。注意:属性页的高级中字符集应该改成使用多字节字符集。4.记住对应数值 ,填入代码内。颜色宏:颜色的英语大写单词。接下来就可以使用了。

2024-02-29 21:18:12 1239

原创 图形化——EasyX的安装

EasyX是一个专注于Windows平台的简单图形库,它旨在提供易于使用和高效的图形编程接口。由于EasyX是专门为Windows平台设计的,它可能能够更好地利用Windows平台的特性和优化。EasyX的API简单直观,并且隐藏了Windows编程的复杂性,这有助于减少代码复杂性和提高性能。然而,EasyX可能不如Qt那样提供丰富的功能和控件。

2024-02-29 00:26:07 540

原创 寒假学习总结

这段时间我主要学习数据结构与算法。而数据结构与算法不仅是编程的基石,更是培养编程思维的关键。它们教会我们如何高效地组织和管理数据,如何分析问题并选择最合适的解决方案。通过运用数据结构与算法,我们能够锻炼出抽象思考、逻辑分析和问题解决的能力,这些都是编程思维的核心要素。因此,深入理解和掌握数据结构与算法,不仅是为了提升程序的性能,更是为了培养出优秀的编程思维。不管结果如何我都曾努力过,不后悔就行。加油~

2024-02-23 22:31:32 1356

原创 记忆化搜索

记忆化搜索(Memory search)是指一种。它的基本思想是,在搜索的过程中,对于已经计算过的状态,将其结果保存下来,以便在后续的计算中可以直接使用,而不需要重新进行计算。这样可以避免大量的重复计算,提高算法的效率。

2024-02-22 23:38:37 885

原创 并查集总结

并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。主要应用在一些有N个元素的集合应用问题中,如开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。

2024-02-22 23:10:45 1010

原创 动态规划背包问题

动态规划背包问题是一类经典的优化问题,涉及到选择物品以最大化某个目标值(通常是价值或利润),同时受到某种约束(如重量、体积或时间)。背包问题可以分为多种类型,例如0-1背包问题、完全背包问题、多重背包问题等。在0-1背包问题中,每种物品只有一个,可以选择放或不放;在完全背包问题中,每种物品有无限个,可以选择放任意个;在多重背包问题中,每种物品有有限个,可以选择放任意个但不能超过给定的数量。

2024-02-22 21:28:17 993

原创 优先队列的实现

插入元素(Insert):将一个新元素添加到优先队列中。这个操作的时间复杂度通常取决于实现方式,但在许多情况下,它可以在对数时间(O(log n))内完成。删除最高优先级元素(Delete Max):从优先队列中移除并返回具有最高优先级的元素。这个操作同样可以在对数时间内完成。查看最高优先级元素(Peek Max):返回具有最高优先级的元素,但不从队列中移除它。这个操作通常比对数时间更快,因为它不需要移动或删除任何元素。修改元素优先级(Change Priority):更改队列中某个元素的优先级。这个操作可

2024-02-21 21:49:44 652

原创 图的基础总结

邻接矩阵是一个二维数组,其中每个元素表示相应顶点对之间的边的权重。对于无向图,邻接矩阵是对称的;对于有向图,邻接矩阵不一定对称。邻接表则是一种链式存储结构,对于每个顶点,都有一个与之相邻的顶点的链表。除了邻接矩阵和邻接表之外,还有一些其他的图的表示方式,如边集数组、邻接多重表等。图的基本操作。

2024-02-21 15:45:30 1015

原创 堆的初级理解

在实际应用中,最大堆和最小堆的选择取决于具体问题的需求。如果需要频繁地查找和删除最大元素,那么最大堆是一个很好的选择;如果需要频繁地查找和删除最小元素,那么最小堆则更为合适。

2024-02-21 12:19:14 979

原创 题目练习

现有 m 所学校,每所学校预计分数线是 ai​。有 n 位学生,估分分别为 bi​。根据 n 位学生的估分情况,分别给每位学生推荐一所学校,要求学校的预计分数线和学生的估分相差最小(可高可低,毕竟是估分嘛),这个最小值为不满意度。求所有学生不满意度和的最小值。

2024-02-20 21:20:53 977

原创 题目练习

石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。在《生活大爆炸》第二季第 8 集中出现了一种石头剪刀布的升级版游戏。升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势:斯波克:《星际迷航》主角之一。蜥蜴人:《星际迷航》中的反面角色。这五种手势的胜负关系如表一所示,表中列出的是甲对乙的游戏结果。现在,小 A 和小 B 尝试玩这种升级版的猜拳游戏。已知他们的出拳都是有周期性规律的,但周期长度不一定相等。例如:如果小 A 以。

2024-02-19 22:33:15 1087

原创 迪杰斯特拉算法

这个时候我们又可以继续往下看,在这一系列过程当中,出发点中只有1和7,还没有被标记,并且他们的出发点是有值的,这个时候我们可以发现出发点最小值是1位置的,我们就把1号位置也标记下来。这个时候我们可以推出他的路径,从4开始往前推,4的前一个点是5,5的前一个点是6,6的前一个点是7,7的前一个点是0,这个时候我们就推出来了,这条路是0->7->6->5->4.2.计算刚加入节点A的邻近节点B的距离(不包括标记的节点),若节点A的距离+节点A到B的边长<节点B的距离,就更新节点B的距离和前面点。

2024-02-18 21:40:46 1282

原创 队列的实现及注意事项

头文件定义 成员函数为队列里面所有的元素都加或减一个常数值。

2024-02-17 11:08:59 568 1

原创 最小生成树

最小生成树(Minimum Spanning Tree, MST)是一个在图论中经常出现的问题,它主要在一个连通的加权无向图中找到一棵包含所有顶点的树,同时使得所有边的权值之和最小。这里的“生成树”是指一个连通无向图的所有顶点构成的极小连通子图,它包含原图中的所有顶点,但只有足以构成一棵树的n-1条边。最小生成树有两个经典的算法来解决,分别是Kruskal算法和Prim算法。

2024-02-16 20:38:23 824 1

原创 二叉树的遍历题型

农夫约翰非常认真地对待他的奶牛们的血统。然而他不是一个真正优秀的记帐员。他把他的奶牛 们的家谱作成二叉树,并且把二叉树以更线性的“树的中序遍历”和“树的前序遍历”的符号加以记录而 不是用图形的方法。你的任务是在被给予奶牛家谱的“树中序遍历”和“树前序遍历”的符号后,创建奶牛家谱的“树的 后序遍历”的符号。每一头奶牛的姓名被译为一个唯一的字母。(你可能已经知道你可以在知道树的两 种遍历以后可以经常地重建这棵树。)显然,这里的树不会有多于 2626 个的顶点。

2024-02-16 12:14:28 455 1

原创 线段树总结

线段树(Segment Tree)是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。使用线段树可以快速地查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。线段树是一种非常有用的数据结构,其是通过的方式将一个大的区间平均地划分成两个小区间,然后再将每个小区间继续平均划分,直到每个区间只包含一个节点的信息。因此,,最后的子节点数目为N,即整个线段区间的长度。

2024-02-15 17:26:17 395 1

原创 二叉树基础总结

树(层级结构)是一种重要的非线性数据结构(递归的数据结构),它由n(n≥0)个有限节点组成一个具有层次关系的集合。这些节点具有如下特性:(在一个有效的树中,如果有n个节点,就会有n-1条边。每个节点有零个或多个子节点。没有父节点的节点称为根节点。根:树的最顶部的节点,唯一没有双亲的节点。每一个非根节点有且只有一个父节点。除了根节点外,每个子节点可以分为多个不相交的子树。树的术语结点:使用树结构存储的每一个数据元素都被称为“结点”。森林:多棵互不相交的树的集合称为森林。

2024-02-14 21:49:57 1806 2

原创 基础链表代码实现

实现一个数据结构,维护一张表(最初只有一个元素 1)。

2024-02-13 23:31:29 1227 1

原创 单链表基础知识点

单链表插入和删除算法其实都是由两部分组成:第一部分就是遍历查找第i个元素;第二部分就是插入和删除元素。对于插入或删除数据越频繁的操作,单链表的效率优势就越是明显。

2024-02-12 22:55:00 475 1

原创 线性表的链式存储结构

线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这些存储单元可以是连续的,也可以是不连续的。这就意味着这些数据元素可以存在内存未被占用的任意位置。以前在顺序结构中,每个数据元素只需要存数据元素信息就可以了。现在链式结构中,除了要存数据元素信息外,还要存储它的后继元素的存储地址。为了表示每个数据元素 ai与其直接后继数据元素 ai+1之间的逻辑关系,对数据元素 ai 来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。

2024-02-12 20:33:56 1013 1

原创 搜索题目练习

给定一个数字字符串,用最小次数的加法让字符串等于一个给定的目标数字。每次加法就是在字符串的某个位置插入一个加号。在里面要的所有加号都插入后,就像做普通加法那样来求值。例如,考虑字符串12,做 0 次加法,我们得到数字 12。如果插入 1 个加号,我们得到 3,因此,这个例子中,最少用 1 次加法就得到数字 3。再举一例,考虑字符串303和目标数字 6,最佳方法不是3+0+3。而是3+03。能这样做是因为一个数的前导 0 不会改变它的大小。

2024-02-07 22:37:13 394 1

原创 题目练习(生死时速2.0版)

洛谷刷题

2024-02-06 20:46:28 1363 1

原创 题目练习(生死时速版)

在一个 n×m 的只包含 0 和 1 的矩阵里找出一个不包含 0 的最大正方形,输出边长。

2024-02-05 19:54:45 1340 1

空空如也

空空如也

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

TA关注的人

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