自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 小红书后端

【代码】小红书后端。

2024-07-09 16:05:54 534 1

原创 Spring

4、Spring Ioc的实现机制是什么_哔哩哔哩_bilibili

2024-07-08 15:38:03 234

原创 JavaSE

用来记录背八股的情况

2024-07-05 14:26:22 296

原创 训练营总结篇

收获最大的收获就是对于算法题不会感到恐惧了,从前总感觉算法跟数学相关,而我的数学又是努力学却总考得很差的一种,卡尔的视频和笔记将很多算法讲得到很通透,而且按照顺序编排,刷起来会轻松一些 在加入训练营之前,试着自己刷题,实在是没法坚持下去,训练营给我最大的帮助,大概就是有了刷题的动力,同时能够看到其他人分享的优秀笔记,其他人也在努力打卡,学起来更有氛围 感谢卡尔的所有笔记和视频,尽管一刷没有记住什么东西,也是一个值得纪念的里程碑,学习总是需要重复的,希望加入训练营的朋友们都能找到理想薪资的工作。

2024-07-04 16:53:53 174

原创 代码随想录Day76(图论Part11)

思路:毫无疑问是最难的一题。

2024-07-04 16:47:05 366

原创 代码随想录Day74(图论Part10)

思路:出现负权回路,按照之前的思路,会一直循环回路,使得成本不断减小,因此核心思路是,在。Bellman_ford 算法 每次都是对所有边进行松弛,其实是多做了一些无用功。更新用的是minDist,判断用的是minDistCopy。使用LinkedList实现Queue,不断从中。思路:关键是在于,每次松弛要基于上一次松弛的结果。因此,关键在于记录上次松弛更新过的节点,用。出节点node,操作。邻接表存储,方便找到。

2024-07-04 16:38:03 757

原创 代码随想录Day73(Part09)

如果 通过 A 到 B 这条边可以获得更短的到达B节点的路径,即如果。所以对所有边松弛一次 能得到 与起点 一条边相连的节点最短距离。那对所有边松弛两次 可以得到与起点 两条边相连的节点的最短距离。那对所有边松弛三次 可以得到与起点 三条边相连的节点的最短距离。堆优化版的主要区别在于,遍历的是边,适合边少,节点多的情况。优先队列中存放 Pair<节点,源点到该节点的权值>存的所有边都取出来,放进优先级队列。将每个节点的边和对应权值保存进去。存储<节点,源点到该节点的权值>存储的是边,使用邻接表。

2024-07-04 15:52:24 389

原创 代码随想录Day72(图论Part08)

存储节点和节点依赖关系。思路:看了一下蓝不过海呀的视频,要找到入度为0的点,删掉该点和该点的出度,要用一个数据结构存起来边,而且要方便删除。思路:直接看的蓝不过海呀的视频,懒得自己写了,抄一遍。

2024-07-04 14:27:17 532

原创 代码随想录Day71(图论Part07)

思路:首先,我不知道怎么存这样的东西,用三维数组吗,没搞懂,果断放弃。prim算法的关键是加点。

2024-07-03 20:35:53 370

原创 代码随想录Day70(图论Part06)

思路:每次更新输出的边,来保证删除的是输入中最后出现的那条边。关键是,我要知道哪条边可以删除,而且是在join的时候就判断。基于【寻找存在的路径】代码改造,如果发现输入的(s,t)指向同一个根,说明是冗余连接,通过s1,t1每次join的时候更新。思路:按照题目的意思,至少有一条边是可以删除的,我想通过fa数组,找到fa中最少被指向的元素,删掉该边,或者是说,输出该边。在遍历father数组时,还需要记录是哪条边,或许可以用set来存储。

2024-07-03 12:57:40 447

原创 代码随想录Day69(图论Part05)

思路:难道说,使用并查集的find函数,遍历所有的边,将节点的父亲信息存起来,如果source和destination没有指向同一个根节点,那么就说明不存在路径。路径压缩,也就是在某一次find函数执行过程中,更新子节点的指向,直接指向顶级节点。

2024-07-02 21:32:40 404

原创 代码随想录Day67(图论 part04)

通过递归, 把所有路径跑一遍, 之后再检查是否所有的节点都有被访问到, 此处不需要回溯。思路:逐个遍历1,计算每个1跟临近的0所形成的边界,加起来,就是周长。思路:从1出发,进行深搜,走完所有路径,看是否能够到达所有节点。注意每次只统计上边和左边的相邻陆地。

2024-07-02 20:00:16 397

原创 代码随想录Day66(图论Part03)

思路:判断周围也没有岛屿,上下左右都没有,那就将当前位置变为0。先标记所有非孤岛,再沉没所有孤岛,再撤销所有非孤岛标记。在dfs里面需要判断岛屿时候接触边缘。

2024-06-28 14:48:23 358

原创 代码随想录Day65

思路:先把矩阵信息存起来,再遍历数组,问题是这个岛屿的判定条件,要求四周都是水,才能称之为岛屿,而且陆地与陆地之间会连在一起,把遍历过的1变成2,这样只要你遍历到1周围有2,就说明两者是连在一起的,只有四周都是0,才加1,或者是遇到1且周围没有2才加1。遇到一个没有遍历过的节点陆地,计数器就加一,然后把该节点陆地所能遍历到的陆地都标记上。在遇到标记过的陆地节点和海洋节点的时候直接跳过。这样计数器就是最终岛屿的数量。思路:遍历岛屿时,要把岛屿面积算上,先定义个maxResult,每次遍历之后替换,想不到。

2024-06-25 15:30:59 206

原创 代码随想录Day64

【代码】代码随想录Day64。

2024-06-25 11:07:59 275

原创 面试准备Day0

今日学习类的生命周期? 类加载过程? 类加载器有哪些? 什么是双亲委派模型? 为什么要使用双亲委派模型? 历史上有哪几次双亲委派模型的破坏?(理解不够深) 热部署的实现流程? Tomcat的类加载机制 解释执行和编译执行的区别?今日复习问题1 问题2

2024-06-24 21:55:49 237

原创 代码随想录Day63

思路:两边比中间的高,就能留住雨水,先下降,再上升,取边界中小的作为水位线,从小的一端遍历到另一端减1的位置,就是水量,取值不知道怎么取。注意,使用单调栈是在横向求解,我一开始想的是使用单调栈竖向求解,所以求不出来。思路:取出非递减的数字,构成矩形。

2024-06-18 22:14:13 206

原创 代码随想录Day62

思路:循环遍历,每次要遍历到自己的下标,我需要写一个函数,从自己的下标出发,再回到自己的下标,找到比自己大的值。stack.push要在while之后,因为要先处理完较小的元素,才能推入元素。思路:双指针,一个指针遍历元素,一个指针寻找下一个更大值。思路:这个不就是上一道题多加一层for循环?

2024-06-18 16:28:20 436

原创 代码随想录Day60

布尔类型的dp[i][j]:表示区间范围[i,j] (注意是左闭右闭)的子串是否是回文子串,如果是dp[i][j]为true,否则为false。

2024-06-15 22:27:20 293

原创 代码随想录Day59

dp[i][j]表示,包含i-1在内的word1转换为包含j-1下标在内的word2所需的最少操作数。char[i-1]==char[j-1]时,dp[i][j] = dp[i-1][j]思路:就这跟编辑距离有啥关系,跟最长公共子序列肯定是有关系的。定义没错,初始化对了,但是递推公式不会。

2024-06-14 22:48:54 245

原创 代码随想录Day58

思路:定义重合数记录s与t的比对情况,挨个取出t的字符,与s的字符进行比较,如果相同,重合数就加1,跳到s的下一个字符进行比较,最后判断重合数是否为s字符串长度。dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2,想要达到相等,所需要删除元素的最少次数。思路:想不到dp数组要如何定义,果断放弃。思路:怎么感觉就是求最长公共子序列。

2024-06-13 20:12:08 370

原创 代码随想录Day57

注意,如果末尾字符不相等,就要用dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]思路:连续是一个关键,不能够通过只取正数的方式来递推,有点思路,但是不多。dp[i] [j]考虑下标(i-1)在内的数组,可以绘制的最大连线数。思路:要先把字符串拆分为字符数组,dp数组要如何定义,

2024-06-12 10:20:34 357

原创 代码随想录Day56

如果 nums[i] > nums[i - 1],那么以 i 为结尾的连续递增的子序列长度 一定等于 以i - 1为结尾的连续递增的子序列长度 + 1。即:dp[i] = dp[i - 1] + 1;dp[i][j] :以下标i - 1为结尾的A,和以下标j - 1为结尾的B,最长重复子数组长度为dp[i][j]。: “以下标i - 1为结尾的A” 标明一定是 以A[i-1]为结尾的字符串 )思路:找到所有的递增区间,再合并起来,想不到用递推公式可以怎么推,难搞。

2024-06-11 11:07:58 301

原创 代码随想录Day53

思路:在k次买入卖出之间,插入冷冻期,冷冻期也是未持有股票的一个状态,思路:没有思路,我直接开抄。

2024-06-11 09:18:25 320

原创 代码随想录Day52

思路:还真就是dp[i][2*k]

2024-06-07 15:38:45 179

原创 代码随想录Day51

dp【i】【0】表示第i天购买,可获得最大利润。dp【i】【1】表示第i天出售,可获得最大利润。

2024-06-06 10:54:04 230

原创 代码随想录Day50

思路:每个节点都要进行判断,三个节点时,选两个子节点相加,或者是选父节点,2个节点时,选其中最大的一个,从最下面往上遍历,每个节点都进行聚合,把最大值聚合起来往上传,我的代码有问题,如何选择了子节点的子节点,那么当前子节点的值要直接加在root上面。思路:多了一个情况,就是最后一个和第一个房间,只能选一个来偷,,我需要处理的情况就是,在偷完第一个房间后,就不能偷最后一个,但是我不知道dp[i]是处于哪个状态。思路:感觉就是要么从1开始,要么从2开始,间隔起来相加就行。

2024-06-05 10:46:34 962

原创 代码随想录Day49

思路:单词可以重复使用,是完全背包,我要怎么拆分字符串呢?能解决拆分这一点,直接用map就能解决这题,我想,可以把字符串的“a-z”给统计出来,看一下能不能通过组合字典的单词,跟这个数组重合,背包大小就是字符串的长度,物品就是单词,单词的长度是物品重量,找到所有跟符合容量的物品组合,再看一下字符串是否匹配?思路:多重背包可以转换为01背包,本质上就是同一种物品有多个,展开之后就是01背包。

2024-06-04 09:52:06 333

原创 代码随想录Day45

1049. 最后一块石头的重量 II - 力扣(LeetCode)思路:怎么感觉这个也是对元素进行分组的操作,因为重量相等才能粉碎,那我把所有石头分为重量接近的两组,然后不断抵消,但是这个要用动态规划,dp数组怎么定义,就是等和子集,如果总和为偶数,直接返回0,如果总和为奇数,就计算出dp[target],再用。

2024-06-03 12:46:02 402

原创 代码随想录Day48

思路:每次凑出来,就计算一次元素总数,这种是在组合的基础上,加上一个要求,求组合最少要有多少个元素,理论上,是要写一个计数的逻辑,一旦符合目标值,就更新计数值,把最小的保留下来,问题在于,要在哪个位置计数,哪个位置更新。思路:首先,要根据整数n找到小于它的完全平方数,建立物品数组,再去算至少要多少个,跟零钱兑换是一样的,求最少需要多少个元素能够组合出目标值,我需要写一个函数,接受int整数,返回小于该数值的完全平方数构成的int数组。= max) 】,如果。

2024-06-03 11:31:34 421

原创 代码随想录Day46

思路:有点难的是,这个是要考虑排序的,不同顺序会被视为不同的组合,想不出来。思路:组合问题,应该用的递推公式跟目标和是一样的。

2024-06-01 10:59:55 256

原创 代码随想录Day44

思路:我直接for循环遍历一下,不就行了咩,不行,不是找一个界线,而是把所有元素分成两部分,直接卡在dp数组的定义上,定义dp[i]是取出i个元素与剩余元素对比的所有情况?

2024-05-30 11:32:52 596

原创 代码随想录Day43

思路:我的想法是,把数字拆成n个相同的数,这样就是某个数的n次方,再乘上一个余数,问题在于,我怎么确定终止条件,啊哈,拆成1的时候,就终止,然后返回最大值。如果是3的话,会变成3,3,3,1的情况 ,而不是3,3,4的情况,所以还是不行。思路:完全想不到,dp[i] 表示由i个节点组成的二叉搜索树的种数。

2024-05-29 10:49:58 258

原创 代码随想录Day42

思路:我的思路是,根据m,n以及起始位置,计算要向右和向下的步数,分别是m-1,n-1次,所以我找到m-1个向下移动以及n-1次向右移动的所有排列可能,就找到了所有路径。找不到这个东西跟动态规划的关联性。我想的是,这是个排列组合问题,数组长度为【m-1+n-1】也就是向右步数和向下步数加起来,然后Csum取min,到那时只能部分AC。思路:有障碍物,感觉不能用数论的方法了,可以先遍历二维数组,得到障碍物坐标,得到数组边界,放弃了,没有思路。

2024-05-28 10:10:46 463

原创 代码随想录Day41

思路:假设dp[i] 表示的是到了第i个台阶,需要的费用,那么dp[i]可以通过dp[i-1]再爬一个楼梯或者是dp[i-2]再爬两个楼梯得到,费用就是这些加上cost[i],需要做的就是从两个里面选一个便宜的,如果两个费用相等,就选dp[i-2]还有就是dp[i - 2],上i-2层楼梯,有dp[i - 2]种方法,那么再一步跳两个台阶不就是dp[i]了么。首先是dp[i - 1],上i-1层楼梯,有dp[i - 1]种方法,那么再一步跳一个台阶不就是dp[i]了么。如何可以推出dp[i]呢?

2024-05-27 09:40:06 718

原创 代码随想录Day39

思路:首先我不知道怎么判断一个节点能当作监控节点,监控节点的作用就是能够连接到周围一步范围的节点,我需要找到能够到达所有节点的最少所需监控节点,目前的一个思路就是,采用层序遍历,记录所有节点能够到达的节点数量,我只知道这个思路,得到这个数组之后,要怎么挑出监控节点就不会了。先找到最大的数字所在的下标,把改数字减1,再把后面的数字变成9,我的思路接近答案,但是还是不行,比如【7,1,1,9】的情况。

2024-05-25 15:46:52 382

原创 代码随想录Day38

思路:把字符串转换为数字吗?ASCII码转出来还是不知道怎么处理,我想的是扫描字符串,把相同字母的离得最远的两个当作左右边界,排序之后,遍历融合区间,之后遍历集合,把数字加起来,我怎么知道哪个是末尾的a呢,啊哈,不断取最大的下标。思路:从小到大排序集合,之后一旦重叠就抛弃右边的一个,然后用左边的一个跟下一个接着判断是否重叠,无法处理【1,2】【1,100】这样的区间,加了if函数通过了,但是无法大通过全部测试用例。思路:以为很简单,遇到重叠的,叠一下加入结果数组,不重叠的,就把前一个加入结果数组。

2024-05-24 15:16:13 263

原创 代码随想录Day37

思路:找重叠区间,逐个扫描区间,把区间范围内的元素加1,全部元素扫描完成之后,就知道了重叠区间,把带有重叠区间信息的数组排序一遍,取出最大的几个元素,直到加起来数字超过气球个数,每加一个数就相当于射出一箭,最后返回这个数。思路:先用元素全为5的数组去减bills数组,得到找零数组,之后遍历bills数组,去把找零数组元素全部变为零,怎么填补我想不出来。思路:我想不到遍历要怎么处理。

2024-05-23 15:09:11 818

原创 代码随想录Day36

不能处理【1,2,5,5,5,2,1】的情况,因为我从左到右去遍历,等到第三个【5】的时候,【5】只会多给一颗糖,之后【2】的糖又多给了一颗,这是要往回走,给【5】再来一颗,要么就加一个逻辑,【i-1】多一个糖的时候,就往回走判断一下。还有一种方式,先排序,把所有负数给取反一遍,保证数组全是正数,再消耗掉剩余的K次,需要两次排序,而且result最后要减去【2 * nums[0]】因为是取反,相当于原来的【1】变成【-1】也就是。思路:先保证每个人至少有一个,再相邻的比较,评分高的给多一个。

2024-05-22 11:23:29 467

原创 代码随想录Day35

思路:根据第一个下标的数值,产生一个区间,找区间里面最大的数字,再以该数字为起点,找区间最大的数,不断缩小,直到从起点出发,利用起点的步数可以到达终点,那终止条件咋搞,终止条件设定为区间为1吧,或者是区间为0。思路:感觉就是找上升区间,定义两个指针,移动终点去找下一个值,一旦发现数值下降,就计算下降前一个数字与起点的差值,遇到下降区间,则更新起点位置。思路:感觉只需要加一点条件就行,每次更新覆盖范围就计数,重要覆盖范围可到达终点,就更新最小值。

2024-05-21 10:10:33 387

空空如也

空空如也

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

TA关注的人

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