- 博客(37)
- 收藏
- 关注
原创 正则表达式
正则表达式(regular expression),简称为regex或regexp,是一种用于描述特定模式的表达式。可以匹配、查找、替换文本中与该模式匹配的内容,应用于各种文本匹配和处理的场景中。(JS常用)
2025-04-16 17:03:01
434
原创 Leetcode——239. 滑动窗口最大值
不愧是困难的题,确实想不出来。但是掌握单调队列这个解题思路,以及getLast()方法,还有removeLast()方法。
2025-04-04 19:09:18
363
原创 Leetcode——150. 逆波兰表达式求值
这道题第一次没想到这个做法,因为与上一道题隔了一段时间去做,第一反应是把所有数组元素全部压进栈中,然后进行运算,反正思路很奇怪,因为在运算过程中可能会出现连消的效果(像那个祖玛一样),和中邪了一样疯狂想用递归求出结果哈哈哈int a = 0;int b = 0;try {if (!return;if (!} else {
2025-04-04 15:26:00
273
原创 Leetcode——1047. 删除字符串中的所有相邻重复项
第一点就是要在peek()之前检查栈内是否还有元素,空栈进行peek()操作会报错。不知道stack怎么返回字符串,以为会有什么方法,结果就是一个简单的遍历。进行遍历时,要注意栈先进后出的机制,注意不要将字符串反转。
2025-03-25 12:57:08
240
原创 Leetcode——128. 最长连续序列
在这道题里最难想的是在遍历的时候寻找子序列的起始元素ps:写到这里感觉可以简化一下,把统计之后的元素删除,因为有可能这些元素还没有在外循环被遍历过,重复计算时间复杂度会高,但是不知道set的remove方法复杂度怎么样。验证了一下上面的方法,删除元素会导致外循环无法正常遍历,可能需要用iterator()进行循环。
2025-03-25 11:09:03
206
原创 Leetcode——28. 找出字符串中第一个匹配项的下标
时间复杂度O(mn),空间复杂福挺简单的,没啥要总结的。时间复杂度O(m+n),KMP算法太强了,有时间我一定要专门开个帖子讲讲我对KMP的理解。(开个超级大坑)KMP简直太神了,巧夺天工。ps:第一次知道if后面还要+空格(标准化)。
2025-03-19 15:23:39
254
原创 卡码网——55. 右旋字符串
代码随想录》后面还有个题解,不知道是不是比我这个更节省空间和时间。(个人认为,这个还需要开辟字符数组,是不是空间消耗更大啊)// 版本一//获取字符串长度//反转整个字符串//反转前一段字符串,此时的字符串首尾尾是0,n - 1//反转后一段字符串,此时的字符串首尾尾是n,len - 1//异或法反转字符串,参照题目 344.反转字符串的解释start++;end--;// 版本二//获取字符串长度。
2025-03-18 15:40:11
141
原创 Leetcode——151.反转字符串中的单词
对字符串还是不够熟练,有好多方法在用的时候想不起来用到很多String的内置函数,非常简洁。最后这种题解,只需新建一个新的StringBuilder类型对象,然后在该StringBuilder进行修改,不需要额外开辟数组或集合,空间复杂度低。就是太复杂了!!学习过后复现都很难!!!
2025-03-17 18:00:40
369
原创 Leetcode——541. 反转字符串 I
新学习了一个StringBuffer类型,相比String来说,具有可操作(增删改和反转),多线程安全的特性。巩固了String对象的substring()方法(这里的string居然是小写),区间是大于等于a,小于b(例如s.substring(a,b))。这种替换方法,上一篇还没觉得多好用,这一篇直接就体现出来了,第六行的比较也可以用三元运算符,交换的部分也可以额外写一个函数替代。
2025-03-14 16:00:46
266
原创 LeetCode——15.三数之和
看见这道题放在哈希了,就用了哈希,被狠狠的骗了。给我的警示就是,以后看到新题,一定要有独立思考,要思考有没有什么东西适合做这道题的哈希,再进行判断。
2025-03-12 10:46:00
422
原创 LeetCode——383. 赎金信
代码随想录里面的题解是将两个字符串.toCharArray()转为字符数组,我用的是.charAt()直接遍历,第一个方法需要消耗额外空间,第二个方法需要有更大的开销,各有利弊吧算是(但是我觉得我的好一点)就是直接两层for循环直接遍历,这里面有一个.erase()函数对赎金信进行删除,最后判断ransomNote中还有没有元素。(想到了eraser,所以直接记住了这个erase函数)
2025-03-07 18:16:00
249
原创 LeetCode——9. 回文数
这里面这个把数字转为字符数组的操作,不太熟练(根本不会)还是临时找的哈哈哈哈,学到了。记得之前看题解三说过,完全倒序输出可能会溢出,建议inverted的定义用long。这个思路真是太无敌了,我只有膜拜的份。
2025-03-06 20:33:24
383
原创 LeetCode——454. 四数相加 II
在这道题中学会了新的map方法——getOrDefault可以通过这个方法寻找map中有没有对应的键,如果没有则返回调用时提供的defaultValue,省去了很多步骤,不使用这个函数的话,可能要进行if判断+put添加。put添加,如果原map中没有该键,则会添加并返回null;如果有,则会对原有的键值对进行覆盖,并返回原来map中的值。
2025-03-06 19:02:21
180
原创 LeetCode——283. 移动零
这道题实在leetcode热题100进去的,因为有分类,所以还是比较清晰的,直接用了双指针,先遍历慢指针(快慢同时+1),找到一个为0的数,就单独让快指针自增,快指针找到一个不为0的就继续进行交换,到最后是快指针遍历到数组末尾,证明从慢指针开始到快指针全部为0,函数就结束了。
2025-03-06 09:58:36
214
原创 LeetCode——202. 快乐数
看了一下题目主要还是检测集合中有没有某个数存在。简单算了一下,n的范围是2^31-1,10位数,假设每位都为9,第一次算出的平方和最大810,故设置了一个1000的数组做哈希表。外层循环判断算出的平方和是不是存在过的,若存在过,即进入无限循环,即不为快乐数。内层循环求平方和。
2025-03-04 13:11:53
152
原创 LeetCode——349. 两个数组的交集
通过上一期的学习,发现这里的nums数组的取值是有范围的,所以可以使用数组做哈希表,在第一个循环用一个集合(因为不定长)进行存储,第二个循环进行比对,查看在集合中有没有数组2中的元素存在。最后重新建一个数组存储集合中的元素。
2025-03-04 11:01:40
157
原创 LeetCode——242. 有效的字母异位词
今天开始学习 新的数据结构——哈希表了,由于对哈希表不太了解,第一道题就直接看题解了,看到一看了解到有暴力解法,先尝试了一下,结果连暴力解法都不会...想了半天,查了好多String的函数(因为学习String的时候,在学校就已经开摆了,所以String相关的方法不太熟练),大体思路是,双层循环,检测到s中的某一位和t中的某一位相同时,就对t进行remove,但是删除过后的j的取值范围没变化,可能会导致j超出t的长度。关于双层循环,问了DeepSeek。
2025-02-27 19:45:34
296
原创 LeetCode——142. 环形链表 II 思路以及思考过程
这题是真的难想,我最开始的思路是给每个链表节点做一个标记,但是不可以修改链表所以作罢,没有其他的思路了,这个题解的思路真的太牛了。
2025-02-27 13:59:04
366
原创 LeetCode——面试题02.07. 链表相交 思路以及思考过程
这个题真是绞尽脑汁也一点思路没有,我一直在纠结,怎么遍历,然后比对出A和B相同节点,最终无果,看了解析,太巧妙了,先把两个链表右侧对齐,因为就算是相交,也是最后几个节点相同,所以调整稍长的那个链表,左侧长出的部分可以直接不看了,然后直接右侧一一(yiyi)比对就可以了(这个一一比对也太一一了)。我的理解是将两个链表分别变为前A后B和前B后A的等长链表,如果有相交的地方,必会在末尾同步出现相同的结点,省去了两个链表的计数和取齐的步骤。1.最开始没想到右侧对齐,也没有仔细理解题目的意思,以为可能会有X型结构。
2025-02-26 17:30:42
112
原创 新的学习计划
最近没在学JavaSE了,感觉欠课欠了很多,学不完了,直接着手写项目,写到遇到不会的东西直接问AI了,干中学。希望能取得比较不错的成果吧,加油。
2025-02-25 15:35:33
227
原创 LeetCode——19. 删除链表的倒数第 N 个结点 思路以及思考过程
这个题我的解题思路也很简单,第一次遍历链表并且计数,第二次遍历链表找到对应的结点然后删除,过程中遇见了一个特殊情况——删除的如果是头结点,就写不出来返回值了,所以就用了虚拟头结点,以及针对只有一个结点的链表做了单独处理。但是看了代码随想录的解析,确实是个好办法,相当于是一个定长的滑动窗口吧(怎么理解应该都可以),所以在快指针移动到末尾时,慢指针即会自动指向倒数第n个结点。力扣题目里有“进阶:只用一次遍历解决”,令我非常好奇。
2025-02-25 15:32:37
326
原创 LeetCode——24. 两两交换链表中的节点 思路以及思考过程
需要注意的问题是while循环里的两个判断条件顺序不能写反,不然会报错(因为程序是从前往后执行,如果反过来写,有可能cur.next已经为空了,再调用cur.next.next就会报错,先判断cur.next的话,判断式为false直接就退出了,就不会报错)这个题也算比较简单,我刚开始遇到的难题是调换之后头节点跑到第二个节点的位置了。(这都没想起来找个虚拟头节点)感觉主要还是对过程的模拟,如果有节点找不到,新建个变量储存一下就OK。看了眼答案,用了下虚拟头节点,迎刃而解了。
2025-01-21 17:16:29
199
原创 LeetCode——206. 反转链表 思路以及思考过程
这个题还算比较简单(但是我刚开始也没想通),我最开始的想法,是从链表最后一个结点开始,把next全部之前前面的结点,但是遍历到最后,就无法反向遍历了(不知道双向链表能不能做到)。看了一眼题解,发现需要用两个变量存储前一个结点和后一个结点(算上遍历变量一共3个)。注意遍历结束时的位置,是应该返回cur还是curPrev还是curNext。curNext初始值不能设置为cur.next,因为不知道头结点是否为空。循环中的赋值注意先后顺序。
2025-01-21 15:36:05
219
原创 LeetCode——707. 设计链表 思路以及思考过程
这道题里我觉得最容易遗忘的就是在增删节点时,size这个链表长度变量也需要跟着增减;然后就是几个if分支里的return是否有写的必要;还有就是在有关index的函数时,不知道是不是我的经验太浅薄了,每次写都需要画个图确认一下,判断语句是<还是<=。
2025-01-18 13:47:04
634
原创 打开博客新世界的感悟
决定在每天学习时间之后的21点钟准时开启我的博客编辑,话说好激动,一直期待9点的到来,可能是把写博客当成我这一天唯一的放松了吧。
2025-01-01 21:00:19
94
原创 我的第一篇博客——勉励自己
目前在学习JavaSE部分,是在跟着b站的动力节点老师(无广)的Java基础的视频学习的,主要是之前看了老师的Java知识框架,觉得比较清晰,计划在1月中旬看完他的Java基础课程。(本来第一次编辑到这里都要放弃了,因为是除了B站以外第一次发布自己的文章,再加上从小就没有写日记的习惯,实在不知道写一些什么,担心没能给大家输出一些优质的内容,但是在这里搜了下关键字“女朋友”,感觉大家写的还是挺杂的,所以我就安慰自己,实在不行我就当做自己的学习笔记来写了。所以这个假期要狠狠地恶补了。
2024-12-31 15:36:41
911
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人