- 博客(47)
- 收藏
- 关注
原创 LeetCode 1722. 执行交换操作后的最小汉明距离 题解
之后我还是沿用上述思路,因为用并查集解决了数组的问题,我便认为可以就这么使用二维数组解决,结果不仅仅碰到了内存超出限制的问题还遇到了计数问题,现在我继续带大家看看我的思路和出现的问题。做交换,说是做交换其实就是去改变二维数组中的值,将其改成true,使其可以被访问,然后对比,忘了说明,对于这个二维数组,其实。变成true,所以在这个地方我就无所适从了,没法找到属于自己的解决方法,即使找到了,是不是会超时呢,这个也要打上一个问号。那么原题的解决方法是并查集,并查集的解决思路是,如图所示。
2025-05-09 21:19:11
517
原创 LeetCode 3341到达最后一个房间的最少时间 I 题解
典型的bfs只是要边bfs的时候边判断t是需要wait后加1还是直接加1,对于此题我们不仅仅可以使用bfs也可以使用Dijkstra,Dijkstra的逻辑感可能更强些,但是会用到一个我平常不怎么使用的函数式子。然后建立队列存放数据,但这个队列有些不同,它不是先进先出(FIFO)类型的队列,而是根据数组第一个值的大小决定,最小的值先出栈。这里就是Dijkstra最关键的一个部分,先来解释一下这里的代码,将初始节点和后续节点抛出(选取最小的t节点)对于。的那条先处理,更新时间为。的值是因为之前遍历过了。
2025-05-08 16:17:58
375
原创 LeetCode 1781. 所有子字符串美丽值之和 题解
虽然跑样例的确是过了,且其复杂度也和官方题解描述的暴力方法差不多,但是由于使用了map维护导致复杂度还是会略高于使用数组维护,所以最后也是喜提了超时报红。这串字符串的遍历过程,根据题目我们可以知道,只有当三个字符起步的时候,才可能存在差值并可以计入统计的子字符串,维护的话我就选择使用map来统计数目,然后通过Math.max和Math.min方法获取最大的值和最小的值。这题光用文字解说还是无法达到讲解题目的预期,所以就结合图文一并来讲讲本题,我的做题思路。这上面是官方题解,和我思路差不多,都是暴力求解。
2025-05-06 23:00:09
208
原创 LeetCode 3423. 循环数组中相邻元素的最大差值 题解
其实就是把该数组相像成一个闭环的圈形数组,首尾相连,那么我们只需要分类讨论即可,第一点是当遍历头节点i=0时,其左节点是i=n-1,其右节点是i=1,第二点是当遍历尾节点i=n-1时,其左节点是i=n-2,右节点是i=0,第三点是正常遍历i,其左节点是i-1,右节点是i+1,所以代码如下。
2025-05-06 22:39:20
328
原创 LeetCode 790 多米诺和托米诺平铺 题解
对于本题不去看LeetCode的评论区和题解很难想到如何去dp,毕竟就算再怎么枚举也很难找到适用于面向结果的规律。所以对于题解我建议大家还是去看一下灵神给的题解,以下是灵神汇总的图,如果能看懂的话,对于解决题目有很大的帮助。然后根据题目要求,我们还需要mod,所以最后的解题步骤如下所示。根据图中所示我们便能找到规律了。
2025-05-06 22:22:54
285
原创 LeetCode 1128. 等价多米诺骨牌对的数量 题解
注释的部分是打印出来对步骤进行调试的,对于上面sum的统计其实是可以统计一个公式的,拿3举个例子,sum=3*(3-1)/2,然后统计即可。有一个,而等价多米诺骨牌对数量的计算是通过计数的方式统计的,如果是三个那就sum=2+1,ans+=sum即可,如果为四个,那就sum=3+2+1,ans+=sum,而在本题中。看了下官方的题解,对于官方的题解它的健和值分别用的是数组下标和数组的值存的,只能说真的非常秒,但也可能是只针对本题而已,毕竟它的范围是。,所以数组的边界定义在100,然后根据二维数组的下标将。
2025-05-06 19:06:06
377
原创 LeetCode 1007. 行相等的最少多米诺旋转 题解
对于本题,我的做题思路是先观察后面分支思考,先说说我的观察,通过题目的示例观察,只有当一个数字的总数等于或超过tops.length后才有可能做到交换出一个所有值都同为一个数的数组,通过该规律,我们可以找到我们需要统计的数值mid,然后通过条件判断,如果两个数组中遍历到相同下标时都没出现mid那就直接return false,但我们最后需要的结果是最少交换几次即可,那我们在遍历的时候便可以统计出来,但是当tops和bottoms数组中同时出现mid时就不必要交换了,直接在后面减掉即可。
2025-05-04 21:15:51
424
原创 LeetCode 1128 等价多米诺骨牌对的数量 题解
可以知道我们需要将上述两种情况总和到一起,那我们就可以常规使用map进行维护,但不同于以往的两个Integer维护,我们这次需要改成String+Integer的map进行维护,而String则是代表i和j(今天的每日一题,我的思路还是硬做,不如评论区通过状压写的简单,但是答题思路加算法实现是没有问题的,且时间复杂度也是可以通过的,毕竟全是。我们官方题解开的数组是100,是为了将双下标变为单下标然后统计数量,比如1,2和2,1都变为12,然后再根据通过加加统计,当到第三个。那么最后相加,结果就出来了。
2025-05-04 19:53:01
407
原创 LeetCode 2071 你可以安排的最多任务数目 题解(附带自己的错误做题思路 过了25/49)
该题解的思路是通过二分,然后一一枚举,找出最大的几个工人和最小的几个任务,然后从最小的工人开始嗑药去匹配,看能匹配到最大的任务是哪个,如果存在不需要吃药就能匹配到的,就直接将该任务抛出,然后继续下一个,并且没有消耗药,如果不存在就说明必须吃药,那就最大程度的利用吃药的这个工人将最大能抛出的值抛出,全部执行完还没return就说明是可以完成当前数量的任务,再增加任务量进行验证可行性,反之减少再验证。决定workers的遍历程度,如果队列存在,将队列先抛出一个值初始化,进入循环。工人:[2, 4, 6, 6]
2025-05-04 18:48:54
694
原创 LeetCode 978 最长湍流子数组 题解
当然,既然第一种情况能做出来了,第二种情况其实也同理,我们只需要改变一下符号即可完成对第二种情况的判断,然后再去取最大的湍流子数组即可。,所以其实还好,给大家说说我的思路,对于本题,我们先研究第一种情况,我们可以通过双下标对其进行维护,再更新。一种是数组长度为1,这个比较简单,我们直接判断长度然后返回子数组长度为1即可。下标的同时还能找出最长的湍流子数组的长度,然后就是去优化一些存在的问题即可。这个题的思路非常简单,只是我的代码没有优化,用的时间复杂度是。还有一种是奇下标和偶下标的值想等,即。
2025-05-01 11:43:48
349
原创 LeetCode 2905 找出满足差值条件的下标II 题解
代码如下所示,短是真的短,但是没有维护,一般碰到这种类型的题目一定是需要维护的,减少复杂度,将最大值最小值记录下来的同时也不破环原有的规则。我的思路是直接枚举写,但这题是中等题,一定不会让你好过的,所以也是喜提了超时,先说一下我的做题思路吧。来说说灵神的思路:通过一遍遍历,当然也是双指针,但是可以通过维护最大最小值,然后优化掉我的。,避免重复遍历,毕竟重复遍历以后,时间复杂度最坏可以到。然后再来看看灵神的做法与其对该代码的维护和优化。画的还是有点难以理解,所以结合文字在看一遍。❌ ➡️ 不满足,继续。
2025-04-30 23:25:32
410
原创 LeetCode LCP40 心算挑战题解
的值,我们截取排序后的数组的后一段子数组,若后一段数组总和为偶数,那就说明这已经是最大的有效得分了,所以可以直接返回当前的sum,但如果是奇数,我们就又要分情况开始讨论了。现在则由我来转述思想供大家参考理解,还是先给出示例,供大家更好的理解这个题目。一个是去除掉最小的奇数换成剩余数组(总数组减去选中的子数组)中最大的偶数。看似一道简单的题目,实则不然,没有看评论的话,实在想不出来怎么写。这个就是总的思路,其实并不难理解,主要是难在想到,没错就是想到…一个是去除掉最小的偶数,换成剩余数组中最大的奇数。
2025-04-30 22:53:36
355
原创 LeetCode 2962 统计最大元素出现至少K次的子数组(滑动窗口)
该题也是一个比较简单的滑动窗口的题目,但是奈何我把题目看错了,导致一直想不到好的解决的方法,我把该题的【nums中的最大元素】省略掉了,看成了该数组中存在子数组的任意一个数只要有数量大于等于k的子数组有多少个。反应过来后,再重新理清了一遍思路和题目,才发现就是一个简单的滑动窗口,还是那句话,外循环右扩展,内循环左收缩。所以理所应到的想到了用前缀和加滑动窗口,构造一个二维前缀和去统计每个值的出现次数,再通过遍历后的右边界减前边界得到,该区间的所有值的个数,如果有大于等于k的就记一次。坐标,当前子数组记作。
2025-04-29 15:33:50
206
原创 LeetCode 2302 统计得分小于K的子数组数目(滑动窗口)
题解的答案很简单就是将我上述的前缀和与滑动窗口结合到了一起,说是简单,但还是很难想到的,因为大多数人的思维都是单向的解决问题的思维,如我一般就是蹦着解决目的去的,并且过程也很符合题目的描述,扯远了,对于该题解,举个例子。对于本题其实就是一个前缀和加滑动窗口的思想,平时按照我这个思想去写的话完全没有问题,一开始我也是分不清滑动窗口和暴力,如下面的样例所示,一开始的解决我还是按照传统意义上的双循环遍历暴力解决,所以复杂度还是。其实最难的应该就是找到最简单的对应关系能联系到题目之中。我还是解释一下题解给的答案。
2025-04-29 14:57:06
263
原创 LeetCode 3392、LCR106、3447题解
先定义一个数组和栈,数组用来标记点是否已经访问过了,且其颜色用来区别组,而栈则是用来遍历节点用的,访问节点,推出节点,新增节点,而颜色的定义我们通过1代表红色,-1代表蓝色,0代表没有访问来进行区分。中实行出栈进栈的操作,防止当前连通分量的节点没有全部遍历染色完,而染色也有相应的规则,找到对应的相同组中出现了连接,那么二分图就不成立了。现在我们知道了子数组的滑动可以通过一次遍历完成,我们现在就要去记录完成条件的子数组的数量了,首先我们知道这是一个整数数组,所以当我们的。
2025-04-28 16:32:00
372
原创 LeetCode 2444、1906、2682 题解(枚举右,维护左,前缀和)
今日又是被leetcode摧残的一天,一道困难题,但不是困难题的难度,但是说实话有点难想,也随机了一些别的题来磨练自己,不多比比,开始整理今天的思路。今天除了该题,还做了一道很难想的前缀和题目,还是一样,先理清自己的思路,再弄清楚题解的思路,其实我也应该再去敲一遍代码的,再敲一遍也不一定能敲出来。但这也只是错误的思路,真正正确的思路应该是用前缀和维护数值和数量,而构建的二维数组大小应该为101,因为根据题目的nums数值区间可以得到。对于该题我的思路是通过二分的方式实现前缀和再开一个二维数组去维护,例如。
2025-04-27 08:57:45
390
原创 Leetcode 2845 题解
还是要把自己做题的思路写出来的,但是结果可能还是得去观摩一下题解,无论是大佬写的题解还是leetcode官方写的题解,看完题解后再去反思才能有收获,即使下次遇见一样的题不见得能写出来,但有思路比没思路更重要。今天写的一题中等题虽然说只能想到前半部分,后半部分打死想不出来,看题解也不是太能理解关于模运算的移相和转换,但是如果只是暴力的话可以过609个样例也已经差不多可以过85%的样例了。我们观察到这个时间复杂度,很简单便能判断我们的循环遍历是会超时的,第二点的优化则成为了我们的重点对象。
2025-04-26 00:17:49
570
原创 LeetCode 2799、2840题解
如图所示为一种解决方法,也可以使用二维数组解决。使用hashmap加滑动窗口解决问题。获取键值对的数量,即不同值的数量。
2025-04-25 00:20:03
224
原创 LeetCode 1922题解(快速幂模板题)
这一题就是典型的快速幂的模板题,前几天因为写题遇到了知识盲区所以弄了很久,昨天的困难题也没做出来,只有自己的计算思路,实现还跑不出来,气死我了,今天也刚刚学会了快速幂。对于本题我们可以对答案进行拆分,分为两部分,一个计算偶数下标的幂次方,一个计算奇数下标的幂次方。这就是快速幂的计算方式,将一个幂次方计算公式拆分后计算。而遍历的幂次方根据二进制的位运算进行遍历拆分幂次方计算。偶数有0,2,4,6,8;质数有2,3,5,7;而位数n对应的偶数下标个数为。所以偶数下标计算5的幂次方。,只有1和0两种情况。
2025-04-14 00:41:50
273
原创 LeetCode 3375 题解
还是如昨天的题目一样,使用Set.add的方法去判断即可。如题所示,允许暴力,虽然是暴力,但复杂度也就O(n)因为是set集合的原因,所以可以排除值相同的原因。当遍历数组有值小于k就return -1。当遍历数组遇见等于k的值,使得ans–当正常遍历数组的值时,使得ans++
2025-04-09 14:25:41
136
原创 LeetCode 3396 题解
当i=4时,set集合添加值2时发现我们在i=1时已经添加过了,所以会返回false,那我们就在这里设一个条件来改变状态移除当前set集合并记录下来一次,这里我设置值setNum自增。而i的值与setNum也有关,i = setNum * 3 - 1,但是也得防止i越界所以要判断是否可以使得i值成立不大于n(即数组的长度),不然直接返回setNum。当i=0时,set集合添加值1。当i=1时,set集合添加值2。当i=2时,set集合添加值3。当i=3时,set集合添加值4。
2025-04-09 00:28:42
298
原创 LeetCode 416、606题解(中等dp、回溯)
当回溯到子叶时,子叶的root.left.val等于root.right.val直接返回s,如果是节点,就根据节点的子叶的两种情况进行回溯。:表示不能通过任何子集的元素组合得到和为。:表示不能通过任何子集的元素组合得到和为。:表示不能通过任何子集的元素组合得到和为。:表示不能通过任何子集的元素组合得到和为。:表示不能通过任何子集的元素组合得到和为。:表示不能通过任何子集的元素组合得到和为。:表示我们可以通过选择元素。:表示我们可以通过选择元素。:表示我们可以通过选择元素。:表示我们可以通过选择元素。
2025-04-07 14:23:27
294
原创 LeetCode 1863.找出所有子集的异或总和再求和
根据上述图可以根据二进制运算获取所有的子集,但是可以使用二进制获取所有子集需要有题目的这一句话才能够使用。
2025-04-05 21:55:23
305
原创 LeetCode 1123.最深叶节点的最近公共祖先 题解
说实话不太好想,而且力扣已经帮你完成了数组转化为二叉树,我还特意去搜了下,我说它怎么就定义了个数据结构就完成了数组到二叉树的转化呢。所以这个递归会把数组完全递归完后找到最深子叶的临近根节点,但如果只是单个子叶那它就没有临近,自己就为自己的临近根节点。先来理解一下今天的题目,今天的题目类型是递归遍历找最深位置,先通过几个样例了解一下。昨天的每日一题比较爽,和前天的差不多,只是会暴力超时,需要用前缀和保证。昨天写了三题,今天目前为止写了一题,玩了会游戏稍微休息了下。,所以又看了两道面试。
2025-04-04 17:27:18
311
原创 Dubbo+Zookeeper
需要使用这个视图页面来管理dubbo的项目,我们还得启动拉取项目中的dubbo-admin-server模块并先更新完pom.xml中的依赖,maven的版本等等基本项也得改掉,之后启动项目成功便能使用这个视图页面来管理dubbo的项目。可以根据这个页面简单学习一下,但是没有集成mysql,也会出现一些报错,且在这之后我们要使用的管理页面是vue的dubbo-admin。dubbon-admin-ui的vue项目通过vscode启动的视图页面来管理dubbo的项目。这里的依赖总的划分一下的话如下图所示。
2025-03-05 22:37:20
600
原创 WebSocket+SpringBoot集成AI(Kimi)
这样的方法最明显的缺点就是需要不断的发送请求,而且通常HTTP request的Header是非常长的,为了传输一个很小的数据 需要付出巨大的代价,是很不合算的,占用了很多的宽带。相对于传统 HTTP 每次请求-应答都需要客户端与服务端建立连接的模式,WebSocket 是类似 Socket 的 TCP 长连接的通讯模式,一旦 WebSocket 连接建立后,后续数据都以帧序列的形式传输。:处理客户端发送的消息。所谓短连接,及连接只保持在数据传输过程,请求发起,连接建立,数据返回,连接关闭。
2025-02-14 18:37:29
890
原创 Spring Boot + Redis + Sa-Token
是 Sa-Token 框架中的一个接口,属于 Sa-Token 身份认证与授权框架的一部分。该接口提供了一些方法来实现自定义的身份认证和授权管理功能,特别是针对自定义的权限验证。
2025-01-03 13:29:14
1962
4
原创 建站技术 | HUGO + GitHub 创建博客页面
我通过参考大量的hugo框架的使用,最后终于在收集整理并使用得出了较好的部署方式。先将我使用到的网站地址全放在前言供大家查阅与使用(并附带说明)。我主要使用了这两篇博客的内容,其中详细的使用我会娓娓道来。
2024-12-16 17:32:40
1776
原创 json文件通过await import导入解析
因为需要打包webpack的缘故,所以需要将fetch换成import遍历url传递资源路径,结果是传递的参数和实际书写的参数都是字符串,结果却出现了两个不同的情况。这是报错的,一片红了,现在只能尝试用绝对的路径去解决问题,不能尝试遍历后使用传参的方法了。这是成功的,会打印出module,里面会有我需要的feature。
2024-12-08 16:39:56
380
原创 在 Vue 项目中,通常有两种方式来放置 JSON 文件
放在 目录: 如果你希望 JSON 文件在构建时经过 webpack 处理(例如,进行打包、压缩等),或者你需要在项目中导入它并作为模块使用,可以将 JSON 文件放在 目录中。 例如,可以将 JSON 文件放在 ,然后通过 语句引入:如果项目只是在网页端使用的话,可以放在public的目录下,但是如果后续有要打包成exe的需求的话,必须放在src下,我是真踩坑里了。
2024-12-07 15:25:01
991
原创 利用Electron给Vue项目打包成exe文件
但是当打包成dist文件夹后,再被electron渲染后它的路径会变成你当前项目的电脑主路径,我的项目在E盘,所以它的主路径就变成了E盘而不是什么public下面.....里面的内容就不演示了,这里虽然成功了,但用这种方法打包后处理有路径问题...在宝塔面板部署都不存在的问题,用了这个插件会出现,应该是插件本身的问题.最后启动项目预览当然是成功了,但是还没有结束,我们想要的是把当前vue项目打包成exe,但是还差最后一步,就是打包。因为我的项目是vue3的项目,所以我使用的脚手架设置路径。
2024-11-11 19:37:17
1814
原创 Spring Cloud的服务熔断(resilience4j)
为什么我会将Hystrix的熔断器换成resilience4j,因为尝试了半天发现虽然Hystrix的熔断器可以正常使服务降级,单个api接口可以返回fallback错误信息,但是不能使得服务熔断,具体原因可能就是注解失效,被放弃了,所以后面边将熔断器换成了当前的熔断器resilience4j具体可以看看这篇博客,这篇博客详细写了如何使用resilience4j熔断器去使服务下降和服务熔断。紧接上文的熔断器使服务降级。
2024-10-30 20:41:07
411
原创 Spring Cloud Hystrix熔断器的使用(服务降级)
在启动类中加入注解@EnableCircuitBreaker和@EnableHystrix。因为这是单个api接口的回退方法所以。
2024-10-28 21:48:12
144
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人