- 博客(328)
- 资源 (11)
- 收藏
- 关注
原创 git:删除上一次 commit 中的某个文件,并重新提交
将 “文件路径” 替换为要删除的文件的实际路径。这将从 Git 仓库中删除该文件,并将其放入暂存区。git rm 相当于 linux rm + git add 命令。之前的提交记录会被新的提交覆盖
2023-10-24 15:30:03 642
原创 LeetCode142:环形链表II
给定一个链表的头节点 head ,返回链表开始入环的第一个节点。如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。示例 1:输入:head = [3,2,0,-4], pos = 1。
2023-10-12 10:20:42 106
原创 LeetCode141:环形链表
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。输入:head = [3,2,0,-4], pos = 1。给你一个链表的头节点 head ,判断链表中是否有环。输入:head = [1,2], pos = 0。解释:链表中有一个环,其尾部连接到第二个节点。解释:链表中有一个环,其尾部连接到第一个节点。输入:head = [1], pos = -1。解释:链表中没有环。
2023-09-08 14:24:07 371
原创 LeetCode21:合并两个有序链表
如果 l1 或者 l2 一开始就是空链表,只需要返回另一个链表。否则,判断 l1 和 l2 哪一个链表的头节点的值更小,然后递归查找剩余节点里值最小的节点,并赋值给当前节点的下一个节点。如果两个链表有一个为空,返回另一个链表结束递归。
2023-06-30 17:46:42 176
原创 LeetCode70:爬楼梯
第 x 级台阶的方案数是爬到第 x−1 级台阶的方案数和爬到第 x−2 级台阶的方案数的和。因为每次只能爬 1 级或 2 级,所以 f(x) 只能从 f(x−1) 和 f(x−2) 转移过来,而这里要统计方案总数,我们就需要对这两项的贡献求和。
2023-06-20 16:06:05 65
原创 CompletableFuture 使用教程
CompletableFuture实现了CompletionStage接口和Future接口,CompletionStage是对Future的一个扩展,增加了异步回调、流式处理、多个Future组合处理的能力,使Java在处理多任务的协同工作时更加顺畅便利。Future没有提供通知机制,Future是否执行完任务需要通过轮询isDone这个方法查询执行结果或者调用get()方法阻塞任务执行,CompletionStage解决了该问题,前一个任务执行成功后可以自动触发下一个任务的执行,中间无需等待。
2022-11-29 17:12:21 891
原创 算法8:弗洛伊德算法
和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名;弗洛伊德算法(Floyd)计算图中各个顶点之间的最短路径;迪杰斯特拉算法用于计算图中某一个顶点到其他顶点的最短路径;弗洛伊德算法 VS 迪杰斯特拉算法:迪杰斯特拉算法通过选定的被访问顶点,求出从出发访问顶点到其他顶点的最短路径;
2022-11-10 21:27:16 182
原创 算法7:迪杰斯特拉算法
迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个结点到其他结点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。
2022-11-06 17:38:29 342
原创 算法6:克鲁斯卡尔算法
以城市公交站问题来图解说明 克鲁斯卡尔算法的原理和步骤:在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树。例如,对于如上图G4所示的连通网可以有多棵权值总和不相同的生成树。在将 加入到最小生成树R中之后,这几条边的顶点就都有了终点
2022-11-06 11:08:28 338
原创 Docker安装Redis
redis-server --appendonly yes:在容器执行redis-server启动命令,并打开redis持久化配置。-p 6379:6379 : 将容器6379端口映射到主机6379端口。–requirepass “123456” :设置密码。docker run -itd :后台运行。如果上面没有设置密码,这里就不要输入密码了。–name redis:设置服务名。
2022-11-01 15:41:19 257
原创 算法5:普里姆算法
普利姆(Prim)算法求最小生成树,也就是在包含n个顶点的连通图中,找出只有(n-1)条边包含所有n个顶点的连通子图,也就是所谓的极小连通子图普利姆的算法如下设G=(V,E)是连通网,T=(U,D)是最小生成树,V,U是顶点集合,E,D是边的集合若从顶点u开始构造最小生成树,则从集合V中取出顶点u放入集合U中,标记顶点v的visited[u]=1。
2022-10-07 17:34:59 2301
原创 算法4:贪心算法
贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果。
2022-10-07 17:18:45 1243
原创 算法3:KMP算法
KMP是一个解决模式串在文本串是否出现过,如果出现过,最早出现的位置的经典算法Knuth-Morris-Pratt 字符串查找算法,简称为 “KMP算法”,常用于在一个文本串S内查找一个模式串P 的出现位置,这个算法由Donald Knuth、Vaughan Pratt、James H. Morris三人于1977年联合发表,故取这3人的姓氏命名此算法.
2022-10-07 17:10:09 150
原创 算法2:动态规划算法
动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。( 即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解 )动态规划可以通过填表的方式来逐步推进,得到最优解。
2022-10-05 11:13:43 278
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人