自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式(2)

由于多流程,导致访问类种类多繁杂,并且客户端与各项服务之间关联性强,此时可以使用一个“门面”,将各个流程响应的方法统一一下,由门面向具体实现派发任务,相当于找门面就能直接完成流程。与装饰模式的区别在于,装饰器是对自身的加强,使用的还是本身,增强的就是和业务有关的,而代理模式使用的就是代理类,是由代理类进行负责做事情,添加的行为一般与业务无关。在一套操作中,有些固定的,有些是变化的,固定方法先写好,变化方法根据子类变化而不同就由子类延迟实现,但是最后的总体操作时相同的。不同状态下有不同行为,一般是自发转换。

2025-04-01 20:42:29 465

原创 设计模式学习(1)

如果直接使用new方式进行创建对象,不仅麻烦一旦出现改动,可能导致需要修改大量代码,如果使用工厂模式,由工厂进行创建则只需要修改工程中的代码即可,同时有些对象的创建可能需要参数,不是简单new即可。建立一个Builder类,对需要创建的对象进行配置,最后在创建,注重的是一步一步配置的过程,且构造方法参数过多时应该使用,此时应该将类的全参构造方法设为私有,用建造者类进行配置。接口的划分应该注意粒度,不要让一些类实现不必要的接口方法,如果出现一个实体类实现接口后,方法无意义,就应该进一步划分接口。

2025-03-31 10:04:05 372

原创 每日小积累day1

硬链接:也是文件的一种,和源文件的inode序号完全相同,可以理解为互相为硬链接,源头是同一个源文件,如果想要保存重要文件,可以建立硬链接来保存,删除一个文件必须删除源文件以及所有的硬链接文件。硬链接不能跨文件系统,因为是使用每个文件系统不同的inode序号进行标识的,不能对目录或者不存在的文件建立,使用ln建立硬链接,如果修改其中一个,所有一同变化,与复制不同,复制会产生独立的文件的inode,本质就是两个引用计数文件共用一个文件内容,指向同一个内存,本质就是指向同一份空间,是同一个文件。

2025-03-30 22:36:51 365

原创 MySQL学习笔记

在某些特定条件,例如执行某个语句时,会自动执行相关的操作,一般用来判断合法性和安全性,相对更加灵活,此时可以从新旧表中对以及变化的数据进行操作。MySQL关系型数据库,其中的实体,每个实体的可以有多个属性,属性不许在分,用于区分不同实体的属性是Key,属性有一定约束。对于InnoDB,数据本身就是索引的一部分,且一定要存在主键,否则也会自己寻找代替,因为其余索引存的值是对应记录的主键。本质就是查询的结果,但是只是虚表,不是真正存在的数据,只是通过视图显示,但是也可以通过视图进行修改。

2025-03-16 16:04:11 306

原创 Redis学习

如果要获取数据使用 get key,随机获取键就是 randomkey,删除数据用 del key,如果要查询所有的键,key *,如果要判断某个键是否存在使用 exist key,如果要将数据转移到别的数据库, move key db,还可以对其重命名,rename key newname ,如果使用renamex 就会自动判断是否有重叠。最开始使用的是MySQL,其使用的是磁盘IO方式较慢,无法满足一分钟成千上万次的访问,而使用内存IO的Redis就可以较好的满足。通常用来存类相关的数据。

2025-03-15 23:04:41 664

原创 Maven学习

package就是将项目打成Jar包共其他工程使用,打包前一定会执行test命令,如果测试不通过打包失败,可以手动跳过,但是不能直接运行,没有主清单,相关依赖也没有引入。如果要将自己的项目要打包供他人使用,需要使用Maven的install,会将工程打包存入本地仓,如果本项目中有相关的依赖,也会传递。如果不希望某个依赖直接传递就可以添加<optional>标签,并设置为真,此时该依赖就不会直接传递,而是需要选择。Maven项目可以继承,创建子项目,父项目会自动标记,同时父亲项目的所有依赖可以直接被继承。

2025-03-14 10:10:19 422

原创 JVM类加载机制

但是如果使用的是静态不可变的字段,那么该字段所属的类不会被加载,因为使用的是常量池中的内容直接替换Test.str,是编译器进行的优化,因为final字段导致其不会变化,对象数组的定义不会触发类的加载。Java提供了,同时也可以自己定义,对于每一个类,即使字节码文件相同,不同加载器加载结果不同,二者联合唯一确定一个类,默认都是使用JDK自带类加载器加载。会将该类的所有标志值进行按位或运算得到对应的值,作为相应的标志,接下来就是该类的类信息,父类与接口信息,字段与方法信息。常量池之后是该类的访问标志。

2025-03-05 21:44:38 341

原创 JVM垃圾回收机制

为了解决上述清除算法导致的内存不连续,引出的该算法,该算法会将区域划分成两块将需要的对象复制并放到另一块中,保证内存的连续,再将另一块内存中的所有对象进行统一清除,这样虽然花费时间复制,但是却保证了内存的连续,适用于新生代经常能回收东西的区域,但是对于老年代就比较鸡肋,因为其内部通常变化不大,每次复制都会浪费很多时间,并且该方法会导致另外一半空间无法利用,因此不会在老年代使用。但是该算法存在一个问题就是,如果相关对象相互引用,即使没有方法得到这两个对象这两个对象依然有1的引用,不会被回收。

2025-03-04 22:12:25 881

原创 JVM内存管理

申请堆外内存,JVM可以通过调用CPP中的函数或malloc进行申请内存,这个内存不在虚拟机之中,而是在物理机上,因此需要我们主动释放,堆外内存操作类:Unsafe,无法直接获得,本质上就是不安全且不建议使用的,只能通过反射拿出该类,使用方法如下,但是堆外内存操作时更加有效率。虚拟机栈,每个方法被执行时都会创建栈帧,栈帧包含的方法的一些信息,将其压入虚拟机栈,栈帧中还保存了一个指向当前方法的运行时常量池,需要调用其他方法时就在常量池中找到符号引用转化为直接引用去调用对应的方法。

2025-03-03 20:58:11 224

原创 JVM学习

Java一次编译到处运行的原理就是基于JVM,JVM本质上就是一个应用程序,用来和操作系统交互,所有产生字节码文件的语言都要将编译后的字节码交由JVM进行运行,JVM内部一般使用堆栈进行操作代替常用系统架构中的寄存器,但是这样就会导致JAVA命令复杂同时运行时间也会有较大变化。接着使用函数创建JVM执行环境,确定数据模型,以及一些配置,进而动态加载jvm.so这个共享库,将其中的相关函数导出并初始化,而启动JVM的函数也在其中,接着启动新线程后开始执行真正的Java程序,也就是主方法。

2025-03-03 18:56:51 95

原创 SPB day2

1、首先利用了Condition进行有选择性的Bean创建,新建一个类实现condition,并在需要导入的Bean上加上@Conditional注解,并传入上述的condition实现子类作为参数,通常会自定义@ConditionOnxxx继承@Conditional,在@Conditional的match函数中使用metadata获取注解数据进行判断。监控机制可以看到项目启动过程中的各种方面信息,启用方法只需要导入依赖坐标即可,就可以在收到记录相关信息的URL 使用admin图形化界面。

2025-02-18 21:17:29 293

原创 SPB学习 Day1

而与Spring不同的是,在启动时候需要在Pom文件中引入SPb的父亲工程,规定了将来可能引入依赖的版本,确保不会出现版本冲突,并且需要在依赖中华加入Starter引入依赖,此时无需规定版本。2、SPB配置文件可以使用yaml或yml,也可以使用properties,yml与yaml优先级要低于properties,默认名称application。使用方式一,在主文件将需要加载的不同环境的application-.properties横杠后标识启动,即可加载配置,语句如下。可以使用${}对数据进行引用。

2025-02-18 12:50:43 335

原创 LeetCode Hot 100 第二天

1、三数之和先转成,两数之和,首先进行排序获得有序数组,将每一个数字都作为区间起点,使用两个指针指向区间头尾,此时区间内都是有序的只要大于就大数左移,反之就小数右移,直到左右指针重合,可以进行剪枝优化,若区间内最小最大已经无法更改大于直接退出。2、接雨水,要多做,单调栈版本是要从每一块的最底层开始计算每次都横着向上计算最后加和求出总的接水内容。

2025-02-09 22:12:50 76

原创 LeetCodeHot 100 第一天

5、盛水最多的问题在于选中两个边上相对较短的一边移动他,因为如果移动长边,不管移动的位置是否大于原来较短的边,面积都会缩小,只有移动较小的边才有可能实现最大的面积,因此此时使用双指针分别指向左右。4、零移动就是将所有的非零移动到最左侧,将零看作空位,遇到非零就和零进行交换,使用两个指针,一个指针作为遍历的标志,另外一个始终指向最左侧的空位,遇到非零就和空位交换,直到所有空位的左移。

2025-02-08 22:05:38 276

原创 二刷代码随想录(数组1)

注意点:注意区间的开闭,求mid的时候注意不要超范围用左地址加上偏移量。而求mid的时候,只要有闭区间,直接两者相减除二就是偏移量,因为即便差1通过除法后值也相同。

2024-09-23 09:08:19 262

原创 一刷代码随想录总结

本次训练营,让我第一次跟着代码随想录完整的刷下来,从一个算法小白,一步步对算法有了一点初步的感觉,但是刷题的路不能变,接下来马上就要跟上二刷,继续记录,并按Java语言再刷一遍。

2024-09-03 10:14:16 405

原创 一刷代码随想录(图论11)

例题:【题目描述】小明喜欢去公园散步,公园内布置了许多的景点,相互之间通过小路连接,小明希望在观看景点的同时,能够节省体力,走最短的路径。给定一个公园景点图,图中有 N 个景点(编号为 1 到 N),以及 M 条双向道路连接着这些景点。每条道路上行走的距离都是已知的。小明有 Q 个观景计划,每个计划都有一个起点 start 和一个终点 end,表示他想从景点 start 前往景点 end。由于小明希望节省体力,他想知道每个观景计划中从起点到终点的最短路径长度。

2024-09-02 18:30:33 1051

原创 一刷代码随想录(图论10)

解法:当没有负权回路时可以考虑使用该方法,即将每次不将所有边进行松弛,因为每次实际上只需要松弛已经计算过的点相连的边即可,使用队列管理节点,若节点minDist更新,则加入队列,直到队列为空结束。若经过节点数目最大为k,则最大松弛次数只能为k+1次,若使用SPFA优化算法则应该将加入队列的节点全部弹出,使用while循环控制松弛次数,同时可以不将重复节点重复加入队列计算。共有 n 个编号为 1 到 n 的城市,通过道路网络连接,网络中的道路仅允许从某个城市单向通行到另一个城市,不能反向通行。

2024-08-31 14:04:42 426

原创 一刷代码随想录(图论9)

解法:若遇到稀疏图可以考虑处理边而非处理节点,使用邻接表来存储边,使用小顶堆对边进行排序,直接取出最小的边即可,然后从当前点出发遍历剩余数组,更新min数组,在将更新后的数组与路径长度加入小顶堆,相当于用一条新边代替了原来的边,并在小顶堆里自动排序得到最短路径。解法:本题的关键在于权值中出现负数不能使用D算法,使用B算法,对每一条边进行松弛,即求出若只经过一条边距离该点的最短路径,对数组进行更行,松弛n次则可以是经过n条边所形成的最短,若要找出从起点到该位置最短应该对其进行n-1次松弛才能得到。

2024-08-30 11:01:10 484

原创 一刷代码随想录(图论8)

某个大型软件项目的构建系统拥有 N 个文件,文件编号从 0 到 N - 1,在这些文件中,某些文件依赖于其他文件的内容,这意味着如果文件 A 依赖于文件 B,则必须在处理文件 A 之前处理文件 B (0 <= A, B <= N - 1)。解法:利用拓扑排序,即将一个有向图展开成一个线性排序,此处遍历图时可以使用bfs搜索法,即每次找到入度为0的节点存入结果集,并从图上移除即可,若移除某一节点后发现图上无节点入度为0,则证明有有向环。输出共一行,如果能处理成功,则输出文件顺序,用空格隔开。

2024-08-29 08:18:04 652

原创 一刷代码随想录(图论7)

2、K算法,与上方不同,K算法管理的的是节点之间的边,首先将节点的边进行排序,先将小的边加入生成树,并将两个节点加入并查集,并每一次都对两个节点进行判断,若发现两个已经在并查集,证明如果加入后会成环,不会加入最小生成树。接下来共有 E 行,每行三个整数 v1,v2 和 val,v1 和 v2 为边的起点和终点,val代表边的权值。不同岛屿之间,路途距离不同,国王希望你可以规划建公路的方案,如何可以以最短的总公路距离将 所有岛屿联通起来。给定一张地图,其中包括了所有的岛屿,以及它们之间的距离。

2024-08-28 08:50:19 249

原创 一刷代码随想录(图论6)

解法:本题就是并查集题目,每次遇到新边先判断二者是否已经在同一集合,如果是则证明此时成环,应该将这条边断开,将这条边输出即可,这里的多个答案是指假设成环则可以选择其中的任意一条边,按并查集思路得到的就是最后输入的一条边。输入一个有向图,该图由一个有着 n 个节点(节点编号 从 1 到 n),n 条边,请返回一条可以删除的边,使得删除该条边之后该有向图可以被当作一颗有向树。1、成环,且有节点入度为2,删除该节点最后的一条边,也就是倒序存入的edge数组中的边。3、没有入度为2的,删除成环边。

2024-08-27 09:29:41 406

原创 一刷代码随想录(图论5)

并查集是用来查询两个元素是否属于同一集合,查询方法主要通过father数组,将该数组中的father[v]设置为另一个元素,代表两个元素连通,此时该元素就是另一个元素的根,按照该思路能够形成一个有向图,要判断是否在一个集合里,只要不断向根查询,若最后落在同一个根上则证明在同一个集合内,其中要减少查询次数时,可以使用路径压缩(推荐)和秩压缩,在查询根的时候就进行路径压缩形成下图的转变,以减少查询步数。在代码中可以将路径压缩放在查询函数,在其他步骤都调用查询函数判断根的位置,实现路径压缩。

2024-08-26 09:53:55 381

原创 一刷代码随想录(图论4)

解法:本质上还是求无向图的最短路径,两个字符串之间若只差一个就可以当做有链接,从起点开始,逐个改变字符串的不同字母若发现字符串中有匹配直接加入队列,并将其存入visitmap并保存其路径长度。解法:本体就是要找出有向图中的全路径,也就是从1节点出发的全路径,使用邻接表存储,使用dfs或者bfs进行搜索,能找到的所有节点全部标记,若最后查找时发现全标记即可,此处dfs无需回溯,因为不是要找出路径,而是只要判断可不可达。给定一个有向图,包含 N 个节点,节点编号分别为 1,2,...,N。

2024-08-24 10:30:01 918

原创 一刷代码随想录(图论三)

题意:给定一个由 1(陆地)和 0(水)组成的矩阵,岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域,且完全被水域单元格包围。孤岛是那些位于矩阵内部、所有单元格都不接触边缘的岛屿。现在你需要计算所有孤岛的总面积,岛屿面积的计算方式为组成岛屿的陆地的总数。输入描述第一行包含两个整数 N, M,表示矩阵的行数和列数。之后 N 行,每行包含 M 个数字,数字为 1 或者 0。输出描述输出一个整数,表示所有孤岛的总面积,如果不存在孤岛,则输出 0。

2024-08-23 09:56:33 950

原创 一刷代码随想录(图论2)

给定一个由 1(陆地)和 0(水)组成的矩阵,计算岛屿的最大面积。岛屿面积的计算方式为组成岛屿的陆地的总数。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。后续 N 行,每行包含 M 个数字,数字为 1 或者 0,表示岛屿的单元格。1、dfs与上一题相同,只是增加一个计数,每遇上新岛屿进行计数。输出一个整数,表示岛屿的最大面积。后续 N 行,每行包含 M 个数字,数字为 1 或者 0。输出一个整数,表示岛屿的数量。

2024-08-22 11:30:40 433

原创 一刷代码随想录(图论1)

又找到了一条从节点1到节点6的路径,又到黄河了,此时再回头,下图图五,路径6撤销(回溯的过程),改为路径7,路径8 和 路径7,路径9, 结果发现死路一条,都走到了自己走过的节点。我们从图中可以看出,从start起点开始,是一圈一圈,向外搜索,方格编号1为第一步遍历的节点,方格编号2为第二步遍历的节点,第四步的时候我们找到终止点end。给定一个有 n 个节点的有向无环图,节点编号从 1 到 n。又找到了一条从节点1到节点6的路径,又到黄河了,此时再回头,下图图四中,路径4撤销(回溯的过程),改为路径5。

2024-08-21 10:25:04 1053

原创 一刷代码随想录(单调栈2)

题意:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。解法:1、暴力解法,第一与最后不加入计算,遍历时将找出每个柱子左右两边的最高柱子,再取最小值减去本柱的长度就是可以求得的雨水容量。2、双指针法,左右分开找到每个柱子的最大左右并保存,最后直接查询其左右并取最大最小值即可。3、单调栈,使用横向计算,如果遇到大于栈顶元素就出现凹槽,可以取水,重新形成单调栈时进行计算。

2024-08-20 12:27:34 325

原创 一刷代码随想录(单调栈1)

题意:请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。

2024-08-19 12:30:55 791

原创 一刷代码随想录(DP10)

题意:给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是)题目数据保证答案符合 32 位带符号整数范围。解法:若s[i-1]=t[j-1]递推公式:若s[i-1]!

2024-08-15 23:02:25 767

原创 一刷代码随想录(DP9)

题意:给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。

2024-08-15 11:38:40 652

原创 一刷代码随想录(DP9)

题意:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4。

2024-08-14 16:02:51 694

原创 一刷代码随想录(Dp8)

题意:给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格。设计一个算法计算出最大利润。解法:分四个状态讨论,状态一:持有股票状态(今天买入股票,或者是之前就买入了股票然后没有操作,一直持有)不持有股票状态,这里就有两种卖出股票状态状态二:保持卖出股票的状态(两天前就卖出了股票,度过一天冷冻期。或者是前一天就是卖出股票状态,一直没操作)状态三:今天卖出股票状态四:今天为冷冻期状态,但冷冻期状态不可持续,只有一天!四种状态导出。

2024-08-13 14:36:18 838

原创 一刷代码随想录(DP7)

输出:4 解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4。动态规划:dp数组的应该为二维数组,dp[i][0]代表第i天持有股票的拥有的钱数,dp[i][1]代表第i天不持有股票拥有的钱数,而以上两者都是由dp[i-1][0]的状态推出的,因此应该从前向后遍历,最后的结果应该是不持有股票的情况,这样可以有更多的钱。同时,你不能在买入前卖出股票。给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。

2024-08-12 08:31:06 912

原创 一刷代码随想录(DP6)

动态规划:主要考虑使用后序遍历,使用两个数来保存偷当前节点或不偷当前节点的最大值,若不偷当前节点,则其值就是选择每个子节点的最大值相加即可,其中可以跳过子节点,但是若选择偷当前节点,只能将子节点两个不偷最大值与自身相加,不能在子节点的两个值中选最大值。如果偷第i房间,那么dp[i] = dp[i - 2] + nums[i] ,即:第i-1房一定是不考虑的,找出 下标i-2(包括i-2)以内的房屋,最多可以偷窃的金额为dp[i-2] 加上第i房间偷到的钱。你是一个专业的小偷,计划偷窃沿街的房屋。

2024-08-10 10:56:18 978

原创 一刷代码随想录(DP5)

1、可以使用回溯,也就是一个一个去匹配,找到了就返回真,每找到返回假,往上回溯,还可以用到记忆化回溯,即使用memory数组保存每次计算的以startIndex起始的计算结果,如果memory[startIndex]里已经被赋值了,直接用memory[startIndex]的结果。2、可以使用背包法,将字符串作为背包,单词作为物品,也就是看单词能否把背包装满,此时dp数组表示,长度为j时是否能用单词表示,递推时要依赖上一个可以的位置与中间的位置,如果同时为真则可以装入背包。拆分时可以重复使用字典中的单词。

2024-08-09 13:49:06 412

原创 一刷代码随想录(DP4)

题意:难度:中等给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。所有可能的组合为: (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2, 1, 1) (2, 2) (3, 1)请注意,顺序不同的序列被视作不同的组合。因此输出为 7。

2024-08-08 10:23:09 770

原创 一刷代码随想录(DP3)

题意:难度:中等给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。一共有5种方法让最终目标和为3。解法:就是找几个正数,几个负数,将正数集合当作left,负数集合当作right就有,left + right = sum,而sum是固定的。

2024-08-07 10:10:41 622

原创 一刷代码随想录(dp3)

题意:有一堆石头,每块石头的重量都是正整数。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x!= y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回 0。输入:[2,7,4,1,8,1]输出:1。

2024-08-05 10:56:48 607

原创 一刷代码随想录(动态规划2)

题意:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?解释: 从左上角开始,总共有 3 条路径可以到达右下角。解法:1、深搜,也就是回溯,由于是从左上角开始,每次只能往下和左移动,使用递归法,若往下能走通,就返回1,若越界就返回0。事实上就是遍历一颗二叉树,叶子节点就是往下或往左。2、 dp,

2024-08-04 21:01:39 698

空空如也

空空如也

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

TA关注的人

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