自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LCR 029

LCR 029

2024-09-24 22:47:04 245

原创 LCR 028

遍历链表,若某节点存在子链,则遍历子链,遍历完后,返回子链最后一个节点。节点置空,否则测试不通过。扁平化子链后,需要将。

2024-09-24 22:43:19 264

原创 Java内存泄漏排查

获取Java进程IDWindows:执行jps命令,或任务管理器查看,又或者执行tasklist命令。:当有多个Java进程时,任务管理器或无法区分特定进程,推荐使用jps命令Linux非容器启动容器启动使用jmap生成Heap Dump文件JDK 自带的一个命令行工具,可以用来生成Java进程的堆转储文件(heap dump),这个文件包含了JVM堆中所有对象的信息。

2024-09-22 19:06:31 596

原创 LeetCode 876

若链表元素为奇数个,则都返回中间节点。

2024-09-19 23:02:25 478

原创 LCR 027

快慢指针 + 反转链表。

2024-09-19 22:59:07 237

原创 LCR 026

将链表中所有元素加入数组中,创建两个指针,分别指向数组的头部和尾部,然后向中间遍历。:寻找链表中点 + 链表逆序 + 合并链表。

2024-09-18 22:44:48 296

原创 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

原创 LCR 022

LCR 021

2024-09-10 22:05:19 300

原创 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

原创 LeetCode 005

基于LCR020的算法,只是结果计算部分不一样。:获取子串只需得到子串长度。

2024-09-09 21:25:29 445

原创 LCR 020

中心拓展:枚举每一个可能的回文中心,然后用两个指针分别向左右两边拓展,当两个指针指向的元素相同的时候就拓展,否则停止拓展。判断是否在最大回文串内(i<=rMax),若在则其最大回文半径 = Math.min(对称端点半径,从。最朴素的解法是枚举所有两字符组合,分别作为起始元素和结尾元素,然后对其判断,复杂度为 O(n3)。:累计res时,要将中心端点到边界都计算进去,故应向上取整。马拉车算法:维护两个变量,最大回文子串的中心端点。:回文中心可能是一个元素,也可能是一个元素间隙。更新最右端点及中心端点索引。

2024-09-07 10:43:16 439

原创 LCR 019

当遇到左右字符不相等时,分别跳过左字符和右字符,若回文成立,则该字符串符合条件。

2024-09-07 10:30:06 439

原创 LCR 018

左指针指向第一个元素,右指针指向最后一个元素。两指针向中间收缩,当遇到不合法字符时跳过直到下一个合法字符。

2024-09-05 23:48:52 242

原创 LCR 017

例如,当t=“abc”,s="abbbbc"时,s中实际有效字符只有’a’、‘b’、‘c’,中间多余的’b’均为无效字符,只有第一个’b’为有效字符。当数组对应位置元素大于0时(t中的该字符数>子串中该字符数),该字符为有效字符。当数组对应位置元素等于0时(t中的该字符数=子串中该字符数),该字符为有效字符。建立双指针,左指针指向子串起始,右指针指向子串结尾。:右指针遍历时,如何判断该字符为有效字符?:左指针遍历时,如何判断该字符为有效字符?中字符时,扩张结束,开始收缩。减1,当子串包含所有。

2024-09-05 23:43:18 454

原创 一文搞懂JAVA序列化机制

序列化:把Java对象转换为字节序列的过程。反序列化:把字节序列恢复为Java对象的过程。

2024-09-04 22:32:50 2032

原创 LCR 016

创建左右指针,分别指向子串的开始和结尾,右指针向右扩张,当第一次遍历到重复字符时,记录此时子串的长度。然后左指针开始收缩,当收缩到重复字符不再重复时,右指针继续向右遍历。官方解法中,左指针每次收缩一个单位,不如直接收缩到第一个重复字符的位置。

2024-09-04 21:48:31 288

原创 LCR 015

LCR 015

2024-09-03 23:15:39 212

原创 LCR 014

LCR 014

2024-09-03 23:12:02 328

原创 LCR 013

初始化时对矩阵的每一行计算前缀和,检索时对二维区域中的每一行计算子数组和,然后对每一行的子数组和计算总和。

2024-08-29 22:34:33 214

原创 LCR 012

前缀和在遍历时叠加,后缀和=数组元素总和 - 当前遍历元素 - 当前元素前缀和。

2024-08-28 22:53:15 284

原创 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 005

LCR 005

2024-08-21 23:55:21 612

原创 LCR 004

LCR 004

2024-08-19 22:28:34 206

原创 LCR 003

LCR 003

2024-08-18 22:26:00 397

原创 快速乘和快速幂

快速乘与快速幂

2024-08-17 23:09:33 206

原创 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

原创 HashMap 与 Hashtable

HashMap 与 Hashtable

2023-05-21 17:46:46 101 1

空空如也

空空如也

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

TA关注的人

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