- 博客(46)
- 收藏
- 关注
原创 Java内存泄漏排查
获取Java进程IDWindows:执行jps命令,或任务管理器查看,又或者执行tasklist命令。:当有多个Java进程时,任务管理器或无法区分特定进程,推荐使用jps命令Linux非容器启动容器启动使用jmap生成Heap Dump文件JDK 自带的一个命令行工具,可以用来生成Java进程的堆转储文件(heap dump),这个文件包含了JVM堆中所有对象的信息。
2024-09-22 19:06:31
596
原创 LCR 023
指针A指向链表A头节点,指针B指向链表B头节点,二者同时遍历,若某一链表遍历结束,则转向另一链表遍历,当两指针指向相同元素时,便是两链表相交结点。,因为当两个链表不相同时,跳出循环的条件为二者均为。:指针移动指向另一个链表头部的条件应该为。中,遍历链表B元素,若某一元素在。中存在,则该元素便是重复元素。将链表A所有元素放入。
2024-09-18 22:37:39
274
原创 LCR 025
反转两个链表,然后顺序遍历,并相加进位,最后反转结果。:遍历栈时,每个新节点指向上一个节点,而非下一个节点。将两链表压入栈中,然后顺序遍历两栈,相加并进位。
2024-09-14 22:30:27
299
原创 LCR 024
每遍历一个节点,将该节点作为反转后的头节点,指向已返转的子链,需要注意最初遍历的节点为。将每个待反转的链表分为头节点和子链,反转子链后,将子链的尾节点指向原来的头节点即可。反转后的尾节点就是原子链的头节点,可以通过。原本的指向,用于传递给下次循环。最后记得将原头节点指向。
2024-09-14 22:24:25
297
原创 Java集合:Queue详解
`Queue` 是 Java 集合框架的一部分,它继承自 `Collection` 接口,并且定义了许多用于队列操作的方法。
2024-09-10 16:45:26
2027
原创 Java集合:Stack详解
Java 中的Stack类是一个后进先出(LIFO, Last In First Out)的数据结构,它继承自Vector类。尽管Stack是一个可用的类,但它被认为是遗留的,并且在新代码中不推荐使用。通常建议使用Deque或ArrayDeque作为替代。
2024-09-10 10:21:38
720
原创 LCR 021
个节点,后指针指向头节点,同时向后遍历,当前指针遍历到尾部时,后指针指向的即为删除节点的前驱节点。将链表所以节点压入栈中,顺序弹出,弹出。个后,栈顶元素即为删除节点的前驱节点。(包括虚拟节点),第二次遍历到第。遍历两次,第一次获取链表长度。个节点(从虚拟节点遍历)设置双指针,前指针指向第。
2024-09-09 21:34:21
350
原创 LCR 020
中心拓展:枚举每一个可能的回文中心,然后用两个指针分别向左右两边拓展,当两个指针指向的元素相同的时候就拓展,否则停止拓展。判断是否在最大回文串内(i<=rMax),若在则其最大回文半径 = Math.min(对称端点半径,从。最朴素的解法是枚举所有两字符组合,分别作为起始元素和结尾元素,然后对其判断,复杂度为 O(n3)。:累计res时,要将中心端点到边界都计算进去,故应向上取整。马拉车算法:维护两个变量,最大回文子串的中心端点。:回文中心可能是一个元素,也可能是一个元素间隙。更新最右端点及中心端点索引。
2024-09-07 10:43:16
439
原创 LCR 017
例如,当t=“abc”,s="abbbbc"时,s中实际有效字符只有’a’、‘b’、‘c’,中间多余的’b’均为无效字符,只有第一个’b’为有效字符。当数组对应位置元素大于0时(t中的该字符数>子串中该字符数),该字符为有效字符。当数组对应位置元素等于0时(t中的该字符数=子串中该字符数),该字符为有效字符。建立双指针,左指针指向子串起始,右指针指向子串结尾。:右指针遍历时,如何判断该字符为有效字符?:左指针遍历时,如何判断该字符为有效字符?中字符时,扩张结束,开始收缩。减1,当子串包含所有。
2024-09-05 23:43:18
454
原创 LCR 016
创建左右指针,分别指向子串的开始和结尾,右指针向右扩张,当第一次遍历到重复字符时,记录此时子串的长度。然后左指针开始收缩,当收缩到重复字符不再重复时,右指针继续向右遍历。官方解法中,左指针每次收缩一个单位,不如直接收缩到第一个重复字符的位置。
2024-09-04 21:48:31
288
原创 LCR 011
将含有相同个数0和1的问题转化为子数组和的问题,当将0转换为-1时,含有相同个数0和1的子数组sum固定为0,因此只需使用 LCR 010 的“前缀和+哈希表”解法即可解决。:前缀和 + 哈希表优化。
2024-08-27 21:47:20
270
原创 LCR 010
直接遍历所有的两元素组合,一个元素作为开始元素,一个元素作为结尾元素,在遍历时直接累加sum,避免得到开始元素和结束元素后再重复计算子数组的和。开始遍历,就会对相同的子数组计算2次,分别是。为结尾元素的子数组,即为符合条件的数组。:前缀和 + 哈希表优化。
2024-08-26 22:44:14
305
原创 LCR 009
和LCR 008题目相似,只是将加法改为了乘法。解法依然是使用两个指针指向索引为0的元素。每次将end向后移动一位,当满足条件时,将start依次向后移动,累加满足条件的个数,前提依然是元素均为正整数。:若k=0,start会在第二层循环中不断后移,知道越界,所以要加上。
2024-08-25 23:15:43
192
原创 LCR 008
每一轮迭代,将 nums[end] 加到 sum,如果 sum≥s,则更新子数组的最小长度(此时子数组的长度是 end−start+1),然后将 nums[start] 从 sum 中减去并将 start 右移,直到 sum
2024-08-23 23:47:25
312
原创 LCR 007
循环a时,若a与上次循环值相同,则又会把上次的abc组合重复录入;循环b和c时,也是同样的道理。因此只需将第一次遇到该循环值时的组合保留即可。:3元素组合不能重复。要解决这个问题,只需设计当其他两个元素和上次循环一样时,当前循环项的值不能和上一次循环的值相同即可。:如果我们发现随着第一个元素的递增,第二个元素是递减的,那么就可以使用双指针的方法,将枚举的时间复杂度从。与解法一一致,只是实现双指针的语句不同。:双指针仅对有序数组有效。
2024-08-22 23:12:22
367
原创 LCR 006
最简单方法:双循环遍历,遍历每一个组合,判断二者相加是否等于target,但是没有利用到数组有序这一特点。先写一个循环,固定被加数a,然后通过二分查找在后面的子序列中查找。前指针指向第一个元素,后指针指向最后一个元素,二者向中间方向靠拢。:二分查找仅对有序数组有效。
2024-08-22 22:48:00
162
原创 LCR 002
所以不能将其转为数字来计算,只能按位运算。从个位开始遍历即可,当某一字符串遍历完,而另一字符串还没遍历完时,高位补零即可。也可以提前比较a和b的长度,在遍历前就高位补0,这样遍历时就不需要做判断。
2024-08-17 22:41:38
218
原创 LeetCode 202
整型最大13位,当每位都为9时,各位的平方和最大为1053,而再求下一个平方和时,一定不会超过1053,所以,若有循环,则一定会在该范围出现,而不会出现计算出无穷大的情况。题目中提到在计算快乐数时,会出现无限循环的情况,因此遍历时需要判断是否存在循环,若存在循环则跳出循环。将每次遍历到的数字存在hash表中,当存入数字和已有数字重复时,判断存在循环,判断循环元素是否为1,为1则代表该数为快乐数。=1,会持续循环下去,那么当我们跳出循环时,判断循环的原因是否由1引起,若是如此,该数即为快乐数。
2024-08-15 22:08:29
455
1
原创 LCR 001
例如:取a=23,b=2,b的变化如下:2->4->8->16,次数count的变化如下1->2->4->8,最后a-b=23-16=7。然后对3再执行一次,b:2,count:1,a-b=1,1已经小于原b=2,可以结束了,最后计数一下每轮的count是多少8+2+1=11,就是我们要的答案啦!该解法利用减法实现除法,每次尝试使用a减去减数的2倍(位运算),若能够减去,则b再翻倍,计算能够减去几次,减不下时,再对余数执行相同的操作,能够减去的次数就是答案。:快速除 + 位运算。
2024-08-14 22:59:38
621
原创 LeetCode 50
该解法较为抽象,将指数转换为二进制,幂运算的规则来实现,举例如:N为13,则X。,该值超过了整型范围,所以需要转换为。13,13的二进制为1101,则X。为整型范围,但实际计算时,当。:每次循环记得N除以2。
2024-08-13 21:54:11
220
2
原创 Git命令总结
Git是一个分布式版本控制系统,可以让开发者在不同的平台和环境中协作开发项目。Git有很多命令,可以用来管理项目的状态、历史、分支、合并、冲突等。本文将介绍一些Git常用的命令,并给出示例和分类。
2023-08-30 15:20:19
64
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人