自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第十五天 | 110. 平衡二叉树;257. 二叉树的所有路径;404.左叶子之和

感觉写了好多的递归之后还是不是很熟练,基本都是后序左右中,主要是内部逻辑这一块有时候想不到,如果高度差大于1,就返回-1,否则返回1+最大高度差;还是递归后序遍历的思想,当遇到左结点时让left为左结点值;注意通过父节点判断是否为左叶子;path中存储的是根节点到当前结点的路径表示;

2023-09-09 11:01:50 56 1

原创 代码随想录算法训练营第十四天 | 104.二叉树的最大深度; 111.二叉树的最小深度;222.完全二叉树的节点个数

递归法主要有三个步骤,第一步确定输入的参数,第二部确定递归终止条件,第三步确定单次递归内逻辑;用后序遍历代码好写;之前用层序遍历迭代法写过;

2023-09-07 20:16:35 45

原创 代码随想录算法训练营第十三天 | 层序遍历; 226.翻转二叉树;101.对称二叉树

模板还是层序遍历的模板,但是注意孩子结点加入队列的时候的写法,ichildren.size(),如果孩子节点不空,将其加入队列;注意每个for循环是循环一层,里面的结点就是一层的结点,数量为size是动态变化的,只是加一个sum作用统计和,最后计算一下平均值即可;跟层序遍历的基本思路还是一样,只是再push_back的时候,加入判断i==size-1,判断是否最右边的结点;加了一下判断,当左右子树都为空时,为最小的深度的结点;入队顺序:左的左,右的右;跟上一题一模一样的代码;

2023-09-07 17:36:36 77

原创 代码随想录算法训练营第十二天 | 递归遍历 ; 迭代遍历 ; 统一迭代

非递归:(只是跟前序遍历换了个顺序,中左右)非递归:一直走到最左,再弹出元素接着向右;

2023-09-06 22:07:23 93 1

原创 代码随想录算法训练营第十一天 | 239. 滑动窗口最大值;347.前 K 个高频元素

大体思路就是先使用unordered_map对出现的频次进行统计,key代表数字value代表出现的频次;然后对出现的频次进行排序,找出前k个频次进行输出,这里采用优先级队列存储map结构,小顶堆,每次弹出出现频次最小的map;最后剩下的就是前k个高频次;按出现频次进行排序,最后输出的是k;暴力解法,部分用例下会超时;优先级队列,有点难想;

2023-09-06 20:46:21 56 1

原创 代码随想录算法训练营第十天 | 20. 有效的括号 ; 1047. 删除字符串中的所有相邻重复项; 150. 逆波兰表达式求值

思路为遇到数字入栈,遇到运算符,从栈中弹出两个数进行计算,把结果再压入栈内·,最后栈内剩余最后一个数即为左后的结果。思路:用栈来进行记录,遇到栈为空或者和栈顶元素不同时进栈,否则出栈,最后全部出栈并且反转;

2023-09-06 16:54:58 46 1

原创 代码随想录算法训练营第九天 | 232.用栈实现队列 ; 225. 用队列实现栈

队列的主要操作front为栈的top操作,主要思想为第一个队列为主要队列,第二个队列为备份队列,出栈的时候que1出到剩一个元素为止,剩下的全部放在que2中,然后出,最后再把que2中的放回que1;注意只用一个队列也能模拟栈,只需将出栈之前的元素再从新入队,将第一个再出队即可;常用栈操作:push栈顶加入一个元素,pop栈顶弹出一个元素,top读栈顶一个元素,empty判断是否为空栈;主要思路就是先入输入栈,出的时候如果输出栈不空就直接出,否则先将输入栈的全部入输出栈再出。

2023-09-05 11:09:09 50

原创 代码随想录算法训练营第八天 | 28. 实现 strStr() (本题可以跳过); 459.重复的子字符串 (本题可以跳过);字符串总结 ; 双指针回顾;

字符串是若干字符组成的有限序列,也可以理解为是一个字符数组,但是很多语言对字符串做了特殊的规定,接下来我来说一说C/C++中的字符串。在C语言中,把一个字符串存入一个数组时,也把结束符 '\0'存入数组,并以此作为该字符串是否结束的标志。对先前的内容进行了总结,kmp之后在进行补;

2023-09-05 09:26:30 39

原创 代码随想录算法训练营第七天 | 344.反转字符串 ;541. 反转字符串II; 剑指Offer 05.替换空格 ;151.翻转字符串里的单词 ;剑指Offer58-II.左旋转字符串 ;

栈操作:stk.emplace(s.substr(l,r-l));stk.pop();stk.top();创建栈:stack<string> stk;比较简单,也可以直接用swap库函数;先去空格,再反转全部,最后反转单词;考虑到存在反转操作,采用栈。注意if的条件判断;

2023-09-01 11:54:18 43 1

原创 代码随想录算法训练营第六天 | 454.四数相加II ;383. 赎金信 ;15. 三数之和 ;18. 四数之和

采用Unoreded_set方法来写,主要是由于去重问题,因此比较不好写,但是好想;再set里找到值等于-a+b的就行;采用哈希表——数组的写法,注意以后见到字符串,只有小写字母,直接定义数组26大小,加一代表出现一次;用unorderd_map来写比较容易,key存相加的值,value存出现的次数;双指针想法比较巧妙,主要是得理解去重方法,不是很好理解;两个for循环暴力解,注意删除字母的写法;

2023-08-29 18:34:29 87 1

原创 代码随想录算法训练营第五天 | 哈希表理论基础; 242.有效的字母异位词; 349. 两个数组的交集; 202. 快乐数; 1. 两数之和

std::unordered_set,std::unordered_map为无序,底层为哈希表实现,其余为有序,底层为红黑树实现;优先使用unordered,速度快,需要key有序时再用其他;注意去重问题,用数组去重不太会;后来知道那个unordered_set可以去重,直接定义这个把相等的加进去就行;主要是想到要在一个集合中查找符合条件的元素,如果满足就退出,不满足就一直往里加;用数组做的,不知道为什么最后一个循环必须是不等于然后false,我等于然后true就不行;简单的暴力解法,注意j的取值范围;

2023-08-28 18:38:16 268 1

原创 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点 ;19.删除链表的倒数第N个节点 ;面试题 02.07. 链表相交 ;142.环形链表II

找环比较简单,定义快慢指针即可,找到入口需要一定数学理解,即从相交点和开头同时出发一个指针,相遇时极为4入口;这个题如果画图的话就会比较清晰的梳理逻辑了;注意是指针相等而不是结点值相等,搞了半天;

2023-08-28 12:05:00 282 1

原创 代码随想录算法训练营第三天 |203.移除链表元素;707.设计链表;206.反转链表

整了半天还是报越界错误,不知道为啥。好久不写链表了有点不熟悉;

2023-08-26 22:00:23 409

原创 代码随想录算法训练营第二天 |977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

最开始的想法是先把矩阵的第一行弄好,再依次循环接下来的数;结果发现边界条件不好处理;查看了解析后自己重新写了下,还是不太熟练需要进一步练习;先进行平方再进行一次冒泡排序,但时间复杂度过高;采用双指针算法,后期还需好好加深理解;采用双指针法:时间复杂度为O(n);

2023-08-26 10:09:50 518

原创 代码随想录算法训练营第一天 | 704. 二分查找,27. 移除元素

【代码】代码随想录算法训练营第一天 | 704. 二分查找,27. 移除元素。

2023-08-24 23:15:00 640 1

空空如也

空空如也

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

TA关注的人

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