自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 (力扣)200、岛屿数量

这道题目需要根据给出的二维数组,求出所有由岛屿组成的区域的数量。 相邻的两个岛屿属于同一片区域。这道题目看似是求最小值,实际上仍然是当遍历到某一个岛屿时,求出包含它的最大区域,使得区域内全是相连的岛屿。 因此,可以使用广度优先搜索方法求解。当遍历到某一个点时,如果这个点是陆地,那么就使用定义好的dfs函数,求出包含这个点的最大区域(dfs:当到达某一个点时,首先判断是否为陆地,如果是,则沿着固定方向,例如上下左右观察相邻的是否为陆地,当某个方向为陆地,到达这个新陆地,继续环顾,以此类推。当四周全是水,退出当

2020-11-20 14:55:50 98

原创 (力扣) 695、岛屿的最大面积

这道题需要求出二维数组中由相邻的1所组成的最大区域,其中两个相邻的1必须在水平或者竖直方向上相邻。 可以看出,当从某个点开始计算,需要求的是所有的可达点,也就是说,需要计算所有能够到达的点,其中,如果相邻两个点都为1,两点之间才会相通。考虑使用深度优先搜索,计算出包含当前点的最大区域,再继续遍历下一个点。因此,适合求解本题。 解题步骤也比较简单。对二维数组进行遍历,当遇到为1的点时,使用dfs计算由该点出发的能够到达的所有为1的点,这样就可以组成一个由相邻1组成的区域。依次遍历剩余的点,求出最大区域存在的1

2020-11-19 19:25:05 121

原创 (力扣)127、单词接龙

这道题也是求最小的问题,可以用广度优先搜索来求解。 题目给出一个数组。需要求出从beginword和endword最小步数,每一步只允许修改一个字母,并且转换过程中的单词必须包含在数组中。 因此,可以使用循环先求出转换一次的所有情况,在使用队列求出转换两次的所有情况,以此类推。在这个过程中,不断更新dfs数组。当发现已经出现endword的情况时,此时的转换步数就是最小的步数,将它输出即可。 另外,如果想要创建一个全是a的数组,可以使用类似以下方法:[a for _ in range(n)],表示外面的中括

2020-11-18 16:03:23 123

原创 (力扣)279、完全平方数

给出一个数字n,它可以由若干个完全平方数相加得到。这道题目需要求出,所需要的完全平方数的最小数量。 求最小的问题,可以用广度优先搜索算法(BFS)求解。不难想出,这些完全平方数肯定比n要小。因此,我新建一个数组,称为完全平方数组,来保存所有比n小的完全平方数。当然,如果在这个过程中,发现n本身就是完全平方数,那么直接输出1即可。 接下来,使用BFS求解。新建bfs数组,BFS是每一步都需要求出所有情况。比如当有一个完全平方数时,列出完全平方数组中的值即可。当增加一个完全平方数时,使完全平方数组中的数两两相加

2020-11-17 16:49:03 74

原创 (力扣) 1091. 二进制矩阵中的最短路径

这道题的目的是在一个矩阵中求出从一个点到另一个点的最短路径。可以使用BFS算法(广度优先搜索)求解。 思路如下:从起点出发,在数组中保存只走一步时所有可能到达的坐标,同时记录步数。这些坐标对应的步数都为1。然后遍历这些坐标,当遍历到某一坐标时,将这个坐标作为起点,列出从起点走一步可以到达的所有坐标,这些坐标对应的步数为2。当所有步数为1的坐标遍历完毕后,步数加一,继续以步数为2对应的坐标为起点,重复以上步骤。在这个过程中,如果发现某一步到达了终点,那么此时就找到了最小路径。假设至少需要n步到达终点,那么1到

2020-11-16 16:11:43 240

原创 (力扣) 95、不同的二叉搜索树 II

这道题的目的是求出由1到n为节点的所有二叉搜索树。 首先需要知道二叉搜索树的定义。在二叉搜索树中,任意取一节点,如果存在左节点,那么根节点值一定会大于左节点值,同理,如果存在右节点,那么根结点一定会小于右节点值。 通常在涉及构建树的问题上,可以考虑递归,这样便可以省去重复的代码。并且这道题可以采用分而治之的方法。即,首先选出根结点,然后就可以确定左子树和右子树分别都有哪些节点值。接着使用递归构建左右子树,以此类推。这样便可以统计出,当根结点为某值时所有的情况,接着更换根节点值,重复以上步骤,直到根结点的所有

2020-11-14 17:06:33 34

原创 (力扣)241、为运算表达式设计优先级

这道题传达的意思是,给出不带括号的一个表达式,例如“2-1-1”,里面包含了数字与运算符。当我们在不同的位置添加不同的括号时,结果可能就会不相同。我们的目的是输出一个数组,里面包含添加任意括号后所有可能的结果。 首先想到的最慢也是实现最复杂的方法是穷举法,即对所有的情况进行统计,计算结果。但是,在这个过程中,具有大量的重复性的工作,且容易造成混乱,同时还有很大可能漏掉一些情况。对于穷举,需要写大量的代码对每个情况进行分析,读起来比较困难且不容易理解,花费时间也较多。 如果将一个很长的式子化为几个比较小的式子

2020-11-13 16:13:01 73

空空如也

空空如也

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

TA关注的人

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