- 博客(28)
- 收藏
- 关注
原创 Java中的linkedList类及与ArrayList的异同
由于涉及的类过多,画起来过于繁琐,这里只展示最外层的继承实现关系可以看到它是继承自AbstractSqquentialList,并且实现了多个接口类,感兴趣的小伙伴可以去深入查看LinkedList具体怎样实现了它们的方法。
2024-09-11 20:00:39 446
原创 Java中的ArrayList类
ArrayList类继承自抽象类AbstractList,同时实现了List和Collection接口,进入源码我们可以看到它的类定义集合其实就是更方便的数组,我们在使用时不需要考虑它的大小,只需要调用类的接口实现就可以了,方便我们开发需要的功能,不必在细节上犯难,这是它的好处。但是还是推荐有兴趣的小伙伴去看一下它的源码,它的底层代码设计的非常巧妙。
2024-09-10 17:21:58 972
原创 每日一题 合并零之间的节点(链表)
给你一个链表的头节点head,该链表包含由0分隔开的一连串整数。链表的和的节点都满足。对于每两个相邻的0,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。然后将所有0移除,修改后的链表不应该含有任何0。返回修改后链表的头节点head。[4,11]上图表示输入的链表。修改后的链表包含:- 标记为绿色的节点之和:3 + 1 = 4- 标记为红色的节点之和:4 + 5 + 2 = 11[1,3,4]上图表示输入的链表。
2024-09-09 16:09:30 259
原创 Java中的Collection
英文翻译为集合,实际上它的作用就是用来存储数据,算是数据的集合,不过它只是一个接口,下面有各种类来实现它,并以不同的数据结构来存储数据。集合和数组类似,但是数组这东西在创建时指定大小,如果以后想要扩容是不允许的,只能另开一个更大的数据存储,而集合这个东西它可以动态的扩容,我们使用的时候不需要考虑它的容量,只需要使用各种增删改查的操作即可,开发人员只需关注业务逻辑本身,而不需要过多考虑这种细枝末节。
2024-09-08 22:07:31 471
原创 Java中的输入输出方法及格式
通过System类中的System.out对象来完成控制台的输出,它在java.lang包中,所有的程序都会自动加载该类,不需要手动导入。System.out.printf(“格式控制部分”,表达式)使用方式和c语言中的printf类似。Scanner类位于java.util.Scanner包中,需要使用import关键字导入。nextInt():获取一个整数,其他基本类型的数据和这个类似,都是next+类型的方式。Scanner 对象名=new Scanner(System.in);
2024-09-06 16:40:08 269
原创 java中的String类型与StringBuffer类型的区别
String类要注意是直接初始化的还是利用构造器初始化的,它们即使生成相同的字符串也会有所区别,当我们使用的字符串需要经常修改的时候还是建议使用StringBuffer,不然会造成空间和时间上的浪费,当然还有一个StringBuilder类,感兴趣的可以去了解一下它们三个的区别,这里不在赘述。本人还在学习Java中,若有错误和不足之处敬请各位指正,不胜感激。
2024-09-06 15:14:43 703
原创 关于java输入字符串的一些问题
输入一个字符串后我们会按回车结束,我们按的回车键也会送入键盘缓冲区作为输入的一部分只不过会被转化为换行符,而且这两种方法都不会把输入的回车给取走,也就是说输入s1的时候输入字符串+回车,next()仅仅是把字符串取走,回车还留在缓冲区中,这样程序接着执行到next()的时候nextLine()就会取走回车,因为nextLine()取字符串是以回车为结束标志,所以就会造成以上问题,只能输入一个有效的字符串。结果就是只能输出s1,然后我就想起来这两种输入方式的区别。
2024-08-30 15:57:39 415
原创 每日一题 所有数对中数位不同之和
数组中所有整数都相同,所以所有整数数对的数位不同之和为 0。所以所有整数数对的数位不同之和为。整数,所有正整数的数位长度都。位置上不同数字的数目。3 的数位不同为 1。的数位不同为 1。的数位不同为 2。
2024-08-30 09:20:24 271
原创 关于JAVA中protected访问修饰符的一些问题
这一句简单的解释我有点摸不着头脑,在本包内都可见我可以理解意思就是在当前包下都可以访问到它,那么其子类可见怎么解释,是在当前包下的子类还是所有包下的它的子类都可见呢?若子类与基类不在同一包中,那么在子类中,子类实例可以访问其从基类继承而来的protected方法,而我们不能通过基类实例访问基类的protected方法。若子类与基类不在同一包中,那么在子类中,子类实例可以访问其从基类继承而来的protected方法,而不能访问基类实例的protected方法。这句话描述的很详细了,但对于初学者来说这句 “
2024-08-28 21:26:59 302 2
原创 力扣每日一题 直角三角形
中等 数学给你一个二维 boolean 矩阵grid。请你返回使用grid中的 3 个元素可以构建的数目,且满足 3 个元素值为 1。grid2有 2 个直角三角形。0没有直角三角形。2有两个直角三角形。
2024-08-02 22:14:29 545 1
原创 数学算法——快速幂
利用这个性质,可以防止数据过大溢出,毕竟C++中long long也只能存1e18的数据(如果不考虑用数据模拟高精度乘法的话),我们在计算时就跳过,不把它乘进结果当中去,下面是计算思路,设res=1,存储结果。二进制取幂的想法是,我们将取幂的任务按照指数的 二进制表示 来分割成更小的任务。对于11来说,它的二进制从低往高数第三位是0,对应。,处理末尾的1:计算a res=res*a。好了,言归正传,快速幂,怎么个快速法呢?11,处理0:对应二进制数为0,跳过。,根据指数的运算法则,
2024-07-30 22:19:58 336 1
原创 力扣每日一题 双模幂运算
1) 对于下标 0 ,variables[0] = [39,3,1000,1000] ,(393 % 10)1000 % 1000 = 1。1) 对于下标 0 ,variables[0] = [2,3,3,10] ,(23 % 10)3 % 10 = 2。2) 对于下标 1 ,variables[1] = [3,3,3,1] ,(33 % 10)3 % 1 = 0。3) 对于下标 2 ,variables[2] = [6,1,1,4] ,(61 % 10)1 % 4 = 2。
2024-07-30 21:19:04 324
原创 力扣每日一题 棒球比赛
"+" - 记录加 9 + 5 = 14 ,记录现在是 [5, -2, -4, 9, 5, 14]"+" - 记录加 -4 + 9 = 5 ,记录现在是 [5, -2, -4, 9, 5]"D" - 记录加 2 * -2 = -4 ,记录现在是 [5, -2, -4]"9" - 记录加 9 ,记录现在是 [5, -2, -4, 9]"4" - 记录加 4 ,记录现在是 [5, -2, 4]"-2" - 记录加 -2 ,记录现在是 [5, -2]"2" - 记录加 2 ,记录现在是 [5, 2]
2024-07-29 12:54:28 760 1
原创 力扣每日一题 满足距离约束且字典序最小的字符串(贪心)
可以证明 "aaaz" 是在任意次操作后能够得到的字典序最小的字符串。"xaxcd" 和 "aawcd" 之间的距离等于 k = 4。"zbbz" 和 "aaaz" 之间的距离等于 k = 3。将 s[0] 改为 'a' ,s 变为 "aaxcd"。将 s[2] 改为 'w' ,s 变为 "aawcd"。将 s[0] 改为 'a' ,s 变为 "abbz"。将 s[1] 改为 'a' ,s 变为 "aabz"。将 s[2] 改为 'a' ,s 变为 "aaaz"。因此,答案是 "lol"。
2024-07-27 15:00:08 511
原创 力扣每日一题 找出分区值
可以将数组 nums 分成 nums1 = [10] 和 nums2 = [100,1]。可以将数组 nums 分成 nums1 = [1,2] 和 nums2 = [3,4]。- 数组 nums1 的最大值等于 10。- 数组 nums2 的最小值等于 1。- 数组 nums1 的最大值等于 2。- 数组 nums2 的最小值等于 3。分区值等于 |10 - 1| = 9。分区值等于 |2 - 3| = 1。可以证明 1 是所有分区方案的最小值。可以证明 9 是所有分区方案的最小值。
2024-07-26 16:19:35 226 1
原创 力扣每日一题 生成特殊数字的的最少操作
当遇到字符0时,判断nums[0]是否为有效值,如果有效,此时构成XXX00式的数字,可以被25整除,他俩中间的字符都是需要去掉的,即中间nums[0]-i-1个数字字符,当然我们并不需要真的在字符串中删除它,只要返回需要删除的长度即可,你以为这就是答案吗,错,因为我们判断的00并不一定在字符串的末尾,在0后面的数字字符也是需要去除的,即num.size()-nums[0]-1,加上中间需要去除的字符,这种情况的答案就是num.size()-i-2。当遇到字符5时,判断nums[0]是否有效,答案同上。
2024-07-25 15:51:28 276 2
原创 力扣每日一题 引爆最多的炸弹(bfs)
每个炸弹有一个范围,引爆这个炸弹后炸弹范围内的炸弹会被引爆,以此类推直到所有范围内的炸弹全部炸完,这是经典的广度优先搜索思路就是把初始点入栈,然后取出栈顶坐标判断bombs数组中是否有栈顶坐标炸弹范围内的炸弹,有的话就入栈,直至栈空为止。这题要求只引爆一个炸弹,因为数组大小限制在了50以内,我们可以循环对每一个炸弹为起点做一遍bfs,然后每次更新引爆炸弹数目。在它爆炸范围内的炸弹都会被引爆,这些炸弹会进一步将它们爆炸范围内的其他炸弹引爆。定义为以炸弹为圆心的一个圆。个炸弹的 X 和 Y 坐标,
2024-07-22 23:12:54 147
原创 我的创作纪念日
起初开始刷算法是因为蓝桥杯三百块的报名费,对我来说真的很多,我想尽可能的不要辜负我花的钱,慢慢的就刷出兴趣来了,但是刷到后期的时候很多题目都是需要一定的数学天赋的,而我的数学基础很差,就很苦恼,只能一边补数学知识一边刷题,你们知道吗,在大学一年级的时候学C语言老师出了个找质数的题目,那个时候我连质数是什么都不知道。所以我觉得一切都是有可能发生的吧,我当初报名的时候也没想到也能打进国赛呢,勇敢去做想做的事情吧,各位。以后遇到有趣的算法题或者学完一些知识我会分享到这上面来,写一些题解啥的,希望涨点粉丝吧。
2024-07-22 18:21:39 437 4
原创 单源最短路径
今天回顾了单源最短路径,还是首推迪杰斯特拉算法,非常好用的一个算法,当然涉及到负权就要利用spfa了,说到单元最短,那就离不开多源最短路径,我会在后续文章中更新多源最短路的算法。
2024-05-21 22:35:53 1502 2
原创 初步学完二叉树后的一些理解
最近学习了二叉树这个数据结构,二叉树,顾名思义,它的存储结构看上去就是一个最多分两个叉的树,如下图,就是一颗经典的二叉树在二叉树中,每个节点最多有一个前驱节点,最多有两个后区节点,我们把前驱节点叫做父节点,后驱节点叫做子节点,如上图中,节点A是节点B的父节点,同时B节点是A节点的左子节点,子节点根据它的所在位置分为左右节点。
2024-04-23 22:27:51 373 1
原创 深度优先搜索
深度优先搜索呢,使用它的主要目的就是“一条路走到黑”,比如在上一段描述的迷宫问题中,深度优先搜索就是找到一个可以走的格子就直接去到那个格子,然后继续看有哪个格子可以走继续走,直到无路可走或者到达终点,此时返回上一个节点。按照它们俩的理念来说,广度优先就是尽可能的多做尝试,比如要你在迷宫中找到目标点,我们就需要看遍四周的路看看那个可以走通,能走通就加入备选队列中,然后不断从队列中取坐标点继续重复上述操作直到找到目标或者无路可走,按照广度优先搜索的特性,它适合用来求最短路问题,或者是求某个操作的最小值。
2024-03-25 22:28:20 331
原创 广度优先搜索 C++队列 P1141 01迷宫
搜索算法算是比较常用的一个基础算法,主要应用在图论中,最常见的是迷宫问题。今天本人又回顾了以前学习过的搜索算法并且在洛谷上刷了几道题,想着拿其中一道题来写个体会。首先,广度优先搜索,顾名思义,尽可能多的向外扩散,比如我现在处在一个大棋盘中的某一个格子上,我就要把四周每个各自都探测一遍,然后在探测过的每一个格子的基础上继续向外扩散一圈,直到所有格子都被探测一边为止,我们完成了一个搜索。那么怎么用代码实现这个算法呢?
2024-03-22 21:48:39 999
原创 一维与二维前缀和
再利用前缀和数组之前我们先来简单证明一下:有l<=r,根据定义,sum[l-1]=a[1]+a[2]+...+a[l-1],sum[r]=a[1]+a[2]+........+a[r],那么sum[r]-sum[l-1]=a[l]+a[l+1]+.....+a[r],就是我们要求的区间和。对于一个长度为n的一维数组a[1] a[2] a[3]......a[n],存在一个数组sum[i],其中sum的每一项sum[i]的值等于a[1]到a[i]的和。假设我们要输入一个长度为n的数组a,对它构造前缀和数组。
2024-03-21 09:01:57 451 1
原创 新人初学贪心算法
刚开始做时,不知道贪心是什么个操作,就纯用代码模拟题目,最愚蠢的是刚开始我用定义了一个牛棚总数大小的数组来模拟牛棚,赋初值为0代表没有牛,后面根据输入的信息将有牛的牛棚赋值为1,然后从头到尾遍历牛棚数组,遇到一个有牛的牛棚后计算它和上一个牛棚的距离和下一个牛棚的距离,如果距离上个牛棚近它们就用一块板子,否则将它和下一个牛棚绑定在一起,木板数量+1,同时计算木板的长度;这个初学者就是我,刚开始想刷贪心的题目练练手的,想着先学习一下他的具体用法,结果发现贪心根本就没有套路,需要不断刷题来培养贪心思路。
2024-03-16 22:39:55 373 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人