文和906
文和906
全部文章
题解
未归档(4)
项目笔记(5)
归档
标签
去牛客网
登录
/
注册
文和906的博客
全部文章
/ 题解
(共9篇)
题解 | #机器人的运动范围#
开始时比较简单的想法就是直接将每个点的位相加,若小于等于阈值,则累计数++。 这种做法在方格的长宽小于10时是生效的,而当方格的长宽之一大于等于10后就会出问题。简答举个例子,(0,10)位数和为1,假设阈值为1,机器人显然不能到达该点,但通过上面的逻辑判断则会将累计数++。 所以解决办法应该是模拟...
C++
回溯
递归
2021-10-19
0
400
题解 | #矩阵中的路径#
经典回溯问题。选择使用循环+递归的方式进行回溯。在一个循环内遍历矩阵中的结点,以该点为起点调用寻路函数在寻路函数中,先判断当前字符串是否满足要求,若是则返回true,否则将其周围四个点拼接至当前字符串尾部,递归调用寻路函数。为了避免一个字符被多次使用,引入一个visited数组,用于记录被访问过的点...
C++
回溯
递归
2021-10-19
0
367
题解 | #矩形覆盖#
解决这题的突破口是找到递推规律。根据题目给出的条件,从水平方向看,可以知道,我们竖着摆放21矩形时,必须一次至少摆两个,而横着摆放时,则可以一次摆一个。所以我们对2n的大矩形,在第一次摆放时,有两种选择,要么摆放一个横着的小矩形,要么一次摆放两个竖着的小矩形。这样就可以得到递推式f(n)=f(n-1...
C++
递归
完美覆盖
2021-10-14
0
415
题解 | #跳台阶扩展问题#
使用和跳台阶一样的思路。模拟跳的过程,将n阶台阶分为第一次跳1阶,第一次跳2阶,...,第一次跳n阶。这样就得到了一个类似于原始跳台阶的公式,f(n)=f(1)+f(2)+...+f(n-1)+1,f(n)表示n阶台阶的跳法数。最后不是加f(n)而是加1,是因为一次跳n个台阶就直接跳完了,只有一种跳...
C++
递归
2021-10-14
0
401
题解 | #斐波那契数列#
基础斐波那契数列,基础递归方法。 class Solution { public: int Fibonacci(int n) { if(n == 1 || n == 2){ return 1; } else{ ...
C++
递归
2021-10-14
0
287
题解 | #字符串的排列#
刚看到题其实稍微有点蒙,不过看了题目配的图就很简单了。图里已经给出了一种解题思路。按顺序遍历遍历字符串,对每一个字符都调换它以及大于等于它的下标的字符,将新得到的字符串压栈,并对新字符串也执行该操作,直到遍历完整个字符串。由于调用的层数比较深,这里选择递归的方法来实现。传入参数中的index为开始交...
C++
字符串
递归
排列组合
2021-10-13
0
409
题解 | #二叉树的下一个结点#
根据中序遍历的规则,可以知道,当该结点有右子树时,返回其右子树最左边的结点。当该结点没有右子树时,则需要向上寻找第一个其左子树中包含该结点的结点。根据这两种需求,分别写两个函数,一个通过递归找最左边的子结点,一个通过递归找向上第一个在左子树中包含该结点的点。根结点由于其next域为空所以需要做特殊处...
C++
二叉树
递归
2021-10-09
0
387
题解 | #二叉搜索树的后序遍历序列#
刚看到题目尝试使用迭代的方法来找规律逐个元素判断,写到后面发现情况太过复杂,还是递归来的方便。 总体思路是后序遍历的搜索树,其最后一个结点为头结点,而前面的数列则可根据该头结点分为连续的两部分,一部分笔比该结点大,一部分比该结点小。 这样就得到了基本的拆分思路,每次都找到数列最后一个数,然后找到数列...
C++
二叉搜索树
递归
2021-10-09
0
370
题解 | #二叉树的深度#
递归深度优先遍历计算树深度。 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {...
C++
递归
二叉树
深度优先搜索
2021-09-30
0
392