随笔分类 -  刷题记录

摘要:title: 有序数组、BST、l累加树的转换 📃 题目一描述 题目链接:108. 将有序数组转换为二叉搜索树 🔔 解题思路 解法一:递归法 符合高度平衡,那么每次取中间值作为节点,将数组分成左右两半,作为左右子树即可; 要明确:如何处理边界问题 class Solution { public: 阅读全文
posted @ 2022-06-11 17:18 D-booker 阅读(53) 评论(0) 推荐(1) 编辑
摘要:title: 二叉搜索树的插入删除修剪 📃 题目一描述 题目链接:701. 二叉搜索树中的插入操作 🔔 解题思路 递归法: 明确BST插入可以不用改变树的结构,所以找到对应的子节点插入即可; class Solution { public: TreeNode* insertIntoBST(Tre 阅读全文
posted @ 2022-06-11 14:45 D-booker 阅读(64) 评论(0) 推荐(0) 编辑
摘要:title: 二叉树和二叉搜索树的最近公共祖先 📃 题目一描述 题目链接:236. 二叉树的最近公共祖先 🔔 解题思路 思考两个节点散布在二叉树上,应该是回溯 自底向上 遍历,才会得到结果; 要明白有一种情况是:必有也仅存在这样一个节点,左子树中含有一个要查询的节点,右子树中含有另一个要查询的节 阅读全文
posted @ 2022-06-10 11:12 D-booker 阅读(20) 评论(0) 推荐(0) 编辑
摘要:title: 二叉搜索树的最小绝对值 📃 题目一描述 题目链接:二叉搜索树的最小绝对值 🔔 解题思路 解法一:安装顺序遍历相邻作差,每一次保留上一个遍历的值,和当前遍历的值进行相减; class Solution { public: int res = INT_MAX; int num = IN 阅读全文
posted @ 2022-06-07 01:28 D-booker 阅读(23) 评论(0) 推荐(0) 编辑
摘要:📕 C++输入输出 目的:解决ACM模式下的输入输出问题 题目来源:牛客OJ练习场 第一题:计算多组a+b 输入描述:输入包括两个正整数a,b(1 ⇐ a, b ⇐ 10^9),输入数据包括多组。 输出描述:输出a+b的结果 示例 输入: 1 5 10 20 输出: 6 30 代码: #inclu 阅读全文
posted @ 2022-05-31 11:33 D-booker 阅读(667) 评论(0) 推荐(1) 编辑
摘要:title: 合并二叉树 📃 题目描述 题目链接: 合并二叉树 🔔 解题思路 递归法:采用前序遍历方式进行简单的构造即可,下面是优化的代码; class Solution { public: TreeNode* mergeTrees(TreeNode* root1, TreeNode* root 阅读全文
posted @ 2022-05-29 00:37 D-booker 阅读(51) 评论(0) 推荐(0) 编辑
摘要:title: 构造二叉树 , 看这一篇就足够! 思想:构造整棵树 = 根节点 + 构造左子树 + 构造右子树 📃 题目一描述 题目链接:从中序与后序遍历构造二叉树 🔔 解题思路 必须明确条件:给出一个数组的值中,是没有重复的数字的,即没用节点的数值是相同的! 画图分析:(图来自dong哥) 可以 阅读全文
posted @ 2022-05-28 00:43 D-booker 阅读(182) 评论(0) 推荐(1) 编辑
摘要:title: 层次遍历 📃 题目描述 题目链接:二叉树的层次遍历 🔔 解题思路 简简单单,用队列来保存每一层的数量,再进行遍历。 class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { if (!root 阅读全文
posted @ 2022-05-27 17:20 D-booker 阅读(87) 评论(0) 推荐(0) 编辑
摘要:title: 从根节点到叶子节点的数字之和 📃 题目描述 题目链接:从根节点到叶子节点的数字之和、相同题目 🔔 解题思路 方法一:递归回溯,主要判断好:当前结点传什么值进来,我传入的是上一个节点加入节点值后扩大十倍; class Solution { public: int res = 0; i 阅读全文
posted @ 2022-05-19 21:55 D-booker 阅读(104) 评论(0) 推荐(0) 编辑
摘要:title: 路径总和 📃 题目描述 题目链接:路径总和 🔔 解题思路 可以参考一下 二叉树的所有路径 这题; 方法一:递归方法,回溯,重点:每次传入当前数据的总和进去,每次还需要和targetSum进行比较,太过于麻烦,直接用减法!传入targetSum - root->val进去和下一个节点 阅读全文
posted @ 2022-05-19 17:05 D-booker 阅读(80) 评论(0) 推荐(0) 编辑
摘要:title:二叉树剪支 📃 题目描述 题目链接:二叉树剪支、相同题目 🔔 解题思路 第一种做法:dfs,思考方式是你站在一个点上怎么做,在一个点上,先看左子树是否要删除,再看看右子树,然后进行删除操作,最后看看自己是不是属于要删除的节点; class Solution { public: Tre 阅读全文
posted @ 2022-05-13 00:29 D-booker 阅读(41) 评论(0) 推荐(0) 编辑
摘要:title: 左叶子之和 📃 题目描述 题目链接:: 左叶子之和 🔔 解题思路 方法一:dfs 注意点:①什么样的才是叶子节点:左右子节点为空;②什么样的才是左的叶子节点:左右子节点为空,同时是父节点的左孩子! 所以加个标志,知道这个节点是不是左孩子即可; class Solution { pu 阅读全文
posted @ 2022-05-12 00:45 D-booker 阅读(50) 评论(0) 推荐(0) 编辑
摘要:title: 二叉树的右侧视图 📃 题目描述 题目链接:二叉树的右侧视图、相同题目 🔔 解题思路 方法一:队列层次遍历(bfs) class Solution { public: vector<int> rightSideView(TreeNode* root) { vector<int> re 阅读全文
posted @ 2022-05-11 23:02 D-booker 阅读(44) 评论(0) 推荐(0) 编辑
摘要:title: 二叉树最底层最左边的值 📃 题目描述 题目链接:二叉树最底层最左边的值 、相同的题目 🔔 解题思路 方法一:采用队列进行层次遍历,每次将每层的第一个值放保存在答案,遍历完该二叉树,那必然就是最底层最左边的节点; 方法二:方法一中的需要消耗o(n)的空间,想一下,有没有不需要消耗这个 阅读全文
posted @ 2022-05-11 21:57 D-booker 阅读(135) 评论(0) 推荐(0) 编辑
摘要:恢复内容开始 title: 往完全二叉树添加节点 📃 题目描述 题目链接:往完全二叉树添加节点 🔔 解题思路 方法一:空间换时间的思想,采用层次遍历,遍历到第一个可插入 节点的 父节点,证明后续的节点都是可以作为父节点插入数据的,保存在队列中,如图: 节点3就是可插入数据的第一个节点,节点6就是 阅读全文
posted @ 2022-05-11 00:27 D-booker 阅读(76) 评论(0) 推荐(0) 编辑
摘要:title: 二维子矩阵的和 📃 题目描述 题目链接:二维子矩阵的和 🔔 解题思路 二维数组前缀和模板题,最主要的问题就是边界问题,最好的解决方案: 加多两个边界: class NumMatrix { public: vector<vector<int>> sum; NumMatrix(vect 阅读全文
posted @ 2022-05-09 22:55 D-booker 阅读(44) 评论(0) 推荐(0) 编辑
摘要:title: 左右两边子数组的和相等 📃 题目描述 题目链接:左右两边子数组的和相等、相同的题 🔔 解题思路 考虑答案是什么情况:存在答案时, 下标左边的数组和 = 下标右边的数组和,可以分别求出两边,然后进行对比,求后边的数组又要进行循环这样时间复杂度过大,或者先求出总和后,每次遍历不断减去, 阅读全文
posted @ 2022-05-09 21:54 D-booker 阅读(26) 评论(0) 推荐(0) 编辑
摘要:title: 0和1个数相同的子数组 📃 题目描述 题目链接:0和1个数相同的子数组、Leetcode相同题目 🔔 解题思路 这道题是不是看起来感觉和JZ010有点像,又有点不像?像是因为都是子数组,而不像因为并没有是要求和为多少,而是要子数组内0、1数量相同。 那么,如果将0 换成-1,是不是 阅读全文
posted @ 2022-05-09 01:26 D-booker 阅读(50) 评论(0) 推荐(0) 编辑
摘要:title: 和为k的子数组 📃 题目描述 题目链接:和为k的子数组、leetcode一样的题目 🔔 解题思路 连续子数组、达到一定值,这些条件好像都是滑动窗口的暗示啊,实际上,不能用滑动窗口!原因:滑动窗口必须都是正数或者负数,因为这样左右指针单向滑动才能一个负责增大 一个负责减少! 解法:前 阅读全文
posted @ 2022-05-09 00:56 D-booker 阅读(53) 评论(0) 推荐(0) 编辑
摘要:title: 长度最小的子数组 📃 题目描述 题目链接:长度最小的子数组、剑指offer008 🔔 解题思路 简单滑动窗口题目,需要知道: 窗口左指针移动条件:窗口内总和 ≥ target 即可以不断移动窗口; int minSubArrayLen(int target, vector<int> 阅读全文
posted @ 2022-05-07 17:47 D-booker 阅读(33) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示