自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录 回溯—组合总和

【代码】代码随想录 回溯—组合总和。

2024-04-21 16:40:59 203

原创 代码随想录 回溯—电话号码的字母组合

path存digits转字符串时各个数字的组合,相当于path是digits.size()大小的字符串,result里就是所有的组合了。用一个string类型的数组来存各个数字所对应的字符串。递归里index代表共有几个数字,再看注释即可。

2024-04-21 15:40:37 157

原创 代码随想录 回溯—组合总和Ⅲ

还是回溯三部曲,但要注意的是在返回参数时还要多加上一个sum进行总和的限定,在push到result里的判定条件有两个,一个是总和为n,一个是数字个数满足k个。在for循环里就是递归了,常规操作,见上一篇即可。

2024-04-18 19:43:00 159

原创 代码随想录 回溯—组合

result存组合结果,path存一个结果生成的路径,回溯函数的参数除了所传进去的n和k,还要传进一个起始点startIndex,这就是确定了参数返回值;if()确定终止条件;for循环里先把当前节点push进path,再进行递归,最后pop出来,给后面的节点pop进留位子。最后返回result。

2024-04-18 17:22:20 162

原创 代码随想录 二叉树—二叉搜索树的最小绝对差

和上题一样,通过中序遍历成一个由小到大排序的数组,这样再通过for循环将较小值放进result里,最后返回result即可。

2024-04-17 22:26:39 112

原创 代码随想录 二叉树—验证二叉搜索树

如果用中序来验证是否是二叉搜索树,那就只用验证中序是否是由小到大的数组,且元素不相同。左右子树还是递归构建,中操作是把值压入数组。

2024-04-15 13:23:01 328

原创 代码随想录 二叉树—二叉搜索树中的搜索

当节点为空或者等于目标值,直接返回。由于是二叉搜索树,特点是左子树的值都小于根节点值,右子树的值均大于根节点,那么,左右子树的构建可以通过值的判断来递归调用。

2024-04-15 12:42:48 267

原创 代码随想录 二叉树—合并二叉树

把tree2加到tree1上然后返回即可,左子树和钩子属的构建依旧是递归。

2024-04-14 20:13:20 310 1

原创 代码随想录 二叉树—最大二叉树

只要构造二叉树,就是前序遍历的方式。如果只有一个节点,就直接返回。循环遍历记录最大的值和最大值的下标,根据下标来决定左子树的构建和右子树的构建,这两个构建直接用递归。

2024-04-14 19:42:16 424

原创 代码随想录 二叉树—路径总和

用pair存放节点和到这个节点的路径和,层次遍历从上到下,路径和就是积累出来的。判断条件就是首先是叶子节点再是路径和匹配。

2024-03-22 16:11:48 182

原创 代码随想录 二叉树—找树左下角的值

就用result存每一行的第一个元素就可以,遍历到最后一行也遍历不下去了,那result就是了。

2024-03-22 15:28:21 206

原创 代码随想录 二叉树—左叶子之和

如何判断是否是左叶子?首先左叶子是父节点的左孩子,其次,左叶子没有孩子,那就可以追根溯源,找它的父节点,如果父节点的左孩子不为空(也就是右左孩子),且父节点的左孩子的左右孩子不存在(也就是左叶子没有孩子),就可以判断父节点的左孩子是左叶子。

2024-03-22 15:00:27 132

原创 代码随想录 二叉树—二叉树的所有路径

路径从上到下,可以理解为深度,那么我们用前序遍历的方式,中左右。先把中进行遍历,加入到path,如果左右孩子都为空那么相当于到了叶子节点了,那就把path加到resul里,进行回溯。

2024-03-19 14:01:06 196

原创 代码随想录 二叉树—平衡二叉树

高度是自下而上来算,深度是自上而下像钻井一般。那这里用后序遍历,左右中。先处理左子树,这里的-2作为信号,换成别的负数也没问题。如果左子树就不是平衡二叉树,那就继续把-2信号返回,再处理右子树同理。最后处理中间,判断左右子树的高度差,如果大于1,就继续返回-2信号,如果小于等于1就返回父节点的高度,即1+左右子树较大值。与高度相关的用后序遍历,与深度相关的用前序遍历。

2024-03-18 22:12:25 331

原创 代码随想录 二叉树—完全二叉树的节点个数

也是模板题,注意:模板题里TreeNode* node=que.front();和que.pop();

2024-03-18 16:56:35 136

原创 代码随想录 二叉树—二叉树的最小深度

最小深度是根节点到最近叶子节点的高度。

2024-03-18 16:45:31 69

原创 代码随想录 二叉树—N叉树的最大深度(递归)

只要是n叉树,一定会有遍历孩子节点的部分,直接for(int i=0;i++)即可,在这个循环里递归。

2024-03-18 14:54:22 183

原创 代码随想录 二叉树—二叉树的最大深度(递归)

用后序遍历,左右中,高度直接在此层数加1即可。

2024-03-17 16:27:35 92 2

原创 代码随想录 二叉树—对称二叉树

【代码】代码随想录 二叉树—对称二叉树。

2024-03-17 16:08:00 108

原创 代码随想录 二叉树—翻转二叉树

想到递归,遍历方法:前序遍历(中左右),swap就是 中 的操作。

2024-03-17 14:39:27 216

原创 代码随想录 二叉树—二叉树的最小深度

都差不多的思路,二刷的时候自己看吧。

2024-03-16 22:14:01 92

原创 代码随想录 二叉树—二叉树的最大深度

depth初始为0,要是有子孩子就depth加1,循环过了之后最后一个没子孩子,depth也会加1,弥补了先开始的0。简单题,模板略微改一点。

2024-03-16 21:11:14 214

原创 代码随想录 二叉树—填充每个节点的下一个右侧结点指针

【代码】代码随想录 二叉树—填充每个节点的下一个右侧结点指针。

2024-03-16 20:58:12 112

原创 代码随想录 二叉树—在每个树行中找最大值

找最大值,那最后的结果是一个一维数组,那么result就不用跟模板一样设置成二维的,既然找最大的,那就把max初值设置为INT_MIN,这个知识点就记下来吧。

2024-03-16 18:44:19 251

原创 代码随想录 二叉树—N叉树的层次遍历

N叉树相比于模板题的区别在于,孩子节点是多个,而不是只有0个1个或者2个,那就单独写一个循环把孩子扔到队列里去,做同样的处理。

2024-03-16 18:33:07 325

原创 代码随想录 二叉树—二叉树的层平均值

就是在每层遍历的时候,把值存在sum里,最后push到result里时取个平均值,注意定义vector时类型是double。还是最初二叉树的模板略加改动。

2024-03-13 19:43:53 131

原创 代码随想录 二叉树—二叉树的右视图

由于一层一层放进去是先左孩子再是右孩子,也就是从左到右的放入,那么右视图也就是看到的是每一层的最后的一个元素,那就只把每层最后一个元素放入result就可以。

2024-03-13 19:31:12 122

原创 代码随想录 二叉树—二叉树的层序遍历Ⅱ

vector容器:push_back(),pop_back(),empty(),erase(),clear()队列queue:push(),pop(),front(),back(),empty(),size()栈stack:push(),pop(),top(),empty(),size()就是在上一个题的基础上将result最后翻转了一下,这样就可以实现自下而上的层序遍历。stack和queue,也就是栈和队列,是push;

2024-03-13 19:25:57 198

原创 代码随想录 二叉树—二叉树的层序遍历

用一个队列和一个二维的数组来辅助,先把根节点push到队列里,当队列不为空时,再用一个一维数组来辅助(之前定义的二维数组的元素),用来储存队列里的值,再把队列元素弹出,然后把左孩子右孩子加入到队列中,这里就相当于在第二层了,一次循环直到没有元素为止。

2024-03-13 18:59:37 146

原创 代码随想录 二叉树—二叉树的迭代遍历

中序遍历顺序 左中右,先用一个节点指向root头节点,用一个栈来辅助,如果栈不空或者这个节点不空就一直循环,当节点不空,就把节点指向的push到战力,然后指向左孩子,这是左操作;如果为空,就把栈中元素弹出,放到result里作为中操作;然后指向右孩子,这是右操作。前序遍历的顺序:中左右,用一个栈来辅助,先把根节点进栈,然后再来一个节点用来保存根节点,把根节点弹出栈放入result数组里,因为栈遵循先进后出,那么我们先把右孩子放进去,再把左孩子放进去,这样左孩子先弹出,再是右孩子,就是中左右的弹出顺序。

2024-03-12 23:09:35 160

原创 代码随想录 二叉树—二叉树的递归遍历

1.确认递归函数的参数和返回值。3.确定单层递归的逻辑。

2024-03-12 19:01:54 200

原创 代码随想录 栈与队列—前k个高频元素

思路:看到这个题的题解才知道自己有多大的知识窟窿。

2024-03-12 09:26:22 104

原创 代码随想录 栈与队列—逆波兰表达式求值

逆波兰表达式相当于后缀表达式,遵循二叉树里的左右中顺序。用一个栈来辅助表达,就是遇到数字就把数字弹入栈,这里要注意弹入栈中的元素要把string类型改成int类型,这里要用到stoi()函数,是c++中将string转换成int类型所用到的函数;如果遇到操作符,就弹出两个数字进行操作符运算。最后用result来保存栈中的最后一个元素,也就是结果,然后返回。

2024-03-11 19:46:36 284

原创 代码随想录 栈与队列—删除字符串中的所有相邻重复项

玩过祖玛吧,一个道理。类比如上一题,也可以用一个栈来辅助,当栈为空或者不匹配时,就把字符串里遍历到的元素压进栈,匹配了就把栈中元素弹出,用result把最后栈中元素保存起来,再相反一下即可。

2024-03-11 19:08:33 223

原创 代码随想录 栈与队列—有效的括号

先给出一个栈,用循环遍历字符串s,如果扫描到左括号,就把相对应的右括号弹进栈,如果还没扫描完字符串s栈就空了或者是栈里的右括号和字符串里的右括号不匹配,就直接返回false,剩下的就是匹配上的情况,就直接弹出栈中的元素,相当于匹配上就消掉。最后扫描完如果栈为空,就是满足情况,直接返回栈空即可。

2024-03-11 18:36:17 537

原创 代码随想录 栈与队列—用队列实现栈

while(size--)里的操作是把q1里除了最后一个元素的所有元素移到q2里,只剩最后一个元素保存在result里返回,但在返回前要把q2里清空。push就直接push就可以。top和empty简单。

2024-03-10 22:58:16 346

原创 代码随想录 栈与队列—用栈实现队列

pop则需要在out栈为空时进行操作,把in栈的栈顶元素push到out里,再把out栈的元素pop出来,中间用result来存,最后返回result。设置两个栈,一个in栈一个out栈,如图。empty就是in和out都为空则返回。push直接push。

2024-03-07 15:21:17 402

原创 代码随想录 字符串—找出字符串中第一个匹配项的下标

获取next数组,next数组存的就是前后缀相等的最大长度,j表示前缀末尾,i表示后缀末尾.

2024-03-06 15:53:09 117

原创 代码随想录 字符串—反转字符串的单词

str是一个元素为字符串类型的数组(理解版),选用循环消除多余的前中后的空格,放入ss中,再把ss放入str中,最后倒着输出str的各个元素即可。

2024-03-06 13:54:43 151

原创 代码随想录 字符串—反转字符串Ⅱ

很明显就是以2k为一组,那就以2k一组来循环。在循环里,先处理2k的前k个字符的反转,如果后一段大于k小于2k,也就是i+k<=字符串长度时(因为后一段如果小于k的话,i+k就会大于字符串长度),那就反转前一段。则两个处理都是一样的。然后继续循环,如果是括号里的情况,就把i开始到最后都反转。

2024-03-05 19:29:37 119

空空如也

空空如也

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

TA关注的人

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