LeetCode
文章平均质量分 54
JKL27
这个作者很懒,什么都没留下…
展开
-
【LeetCode|数据结构】剑指 Offer 33. 二叉搜索树的后序遍历序列
Step1. 根据 arr 的最后一个元素,将其之前的序列进行划分(左子树、右子树);如果存在不能划分的情况,返回 false。Step2. 递归判断左右子区间,直至当前区间不能再被划分。原创 2023-08-20 16:43:27 · 278 阅读 · 0 评论 -
【LeetCode-Medium】833. 字符串中的查找与替换
Step1. 初始化 `ans[]`。Step2. 根据 `index, source, target` 查找;如果找到,那么将 `ans[i]` 更改为 `target`,并将其后source.length()-1位设为空(被替换)。Step3. 拼接 `ans[]` 为一个字符串。原创 2023-08-15 21:38:07 · 394 阅读 · 0 评论 -
【LeetCode-中等】剑指 Offer 36. 二叉搜索树与双向链表
Step1. 后序遍历,寻找 root 的最左侧和最右侧节点,分别设为 head, tail。Step2. 补充寻找指定节点左子树最右侧、右子树最右侧的节点的代码。Step3. 构建 head 和 tail 之间的联系。原创 2023-08-09 17:29:16 · 276 阅读 · 0 评论 -
【LeetCode-中等】722. 删除注释
Step1. 先将source合并为一个字符串进行处理,中间补上’\n’,方便后续确定注释开始、结束位置。Step2. 定义数组 toDel,记录每一个注释开始、结束的位置;进行状态转移。对于 /**/ 类型的注释的结束符 */,如果匹配失败,则需要回退一位。Step3. 遍历 toDel,得到不含注释的中间结果 tmpAns。Step4. 根据 \n 来分割 tmpAns 即可。原创 2023-08-03 17:53:00 · 237 阅读 · 0 评论 -
【LeetCode-中等】623. 在二叉树中增加一行(C++实现)
根据题目的第4个规则,当depth==1时,将新建的节点设为根节点,原来的根节点设为左孩子。层序遍历获取depth-1行的节点进行处理。随后,进行层序遍历,进行至depth-1行。原创 2022-08-05 10:43:49 · 212 阅读 · 0 评论 -
【LeetCode-中等】592. 分数加减运算(C++实现)
每一步的计算分为4个部分计算最小公倍数、通分、计算、约分。,说明正在遍历第一个分数,此时将其设为0。字符串按照‘/’分割即可。来判定,之后返回结果即可。,都将前面的字符串转换为。将前面的字符串转换为。计算,格式化字符串。.........原创 2022-07-27 09:00:00 · 166 阅读 · 0 评论 -
【LeetCode-中等】919. 完全二叉树插入器(C++实现)
假设下标从1开始)在这个完全二叉树中,下标为。根据完全二叉树的特性,可以用数组来辅助存储二叉树。新建节点,插入数组后和父节点建立联系即可。如果当前数组大小原创 2022-07-25 21:20:16 · 355 阅读 · 0 评论 -
【LeetCode-中等】814. 二叉树剪枝(C++实现)
遍历中,可以传递三个参数当前节点、父亲节点、代表当前节点是父亲节点的左孩子还是右孩子(假设左孩子为0,右孩子为1)。对于判断当前子树是否包含1的函数。②当前节点的左子树中包含1。③当前节点的右子树中包含1。对题目给定的树进行遍历。①当前节点的值为1。......原创 2022-07-21 21:33:14 · 406 阅读 · 0 评论 -
【LeetCode-中等】513. 找树左下角的值(C++实现)
513. 找树左下角的值层序遍历进行每一层的遍历时,保存第一个值()即可。原创 2022-07-05 09:00:00 · 62 阅读 · 0 评论 -
【LeetCode-中等】532. 数组中的 k-diff 数对(C++实现)
532. 数组中的 k-diff 数对预排序 + 二分查找首先,对数组进行预排序。设置一个set来保存数值对。之后,遍历整个数组。每一次遍历,在区间 中,查找 ,如果找到,就把数值对 加入集合。原创 2022-07-04 09:00:00 · 105 阅读 · 0 评论 -
【LeetCode-中等】515. 在每个树行中找最大值(C++实现)
515. 在每个树行中找最大值 - 力扣(LeetCode)使用层序遍历,记录每一行的最大值即可。实现代码(C++)原创 2022-07-03 09:26:54 · 191 阅读 · 0 评论 -
【LeetCode-中等】450. 删除二叉搜索树中的节点(C++实现)
450. 删除二叉搜索树中的节点根据二叉查找树的特点(左孩子比当前节点小,右孩子比当前节点大,以当前节点为根节点的二叉树也是二叉查找树),可以分为下面三种情况讨论:当前节点小于 key继续在左子树中寻找当前节点大于 key继续在右子树中查找当前节点等于 key根据题目的意思,会有多种答案,我使用下边的方法:如果当前节点①既有左孩子,又有右孩子,那么将parent设为目标节点的右孩子,并将目标节点的左子树放在目标节点右子树的最左边(根据二叉查找树的定义,左边的节点小于右边,所以需要放到目标节点右子树的原创 2022-07-02 06:47:39 · 283 阅读 · 0 评论 -
【LeetCode-中等】剑指 Offer 47. 礼物的最大价值(C++实现)
文章目录题目链接解题思路实现代码(C++)题目链接剑指 Offer 47. 礼物的最大价值解题思路动态规划。初始值:f[0][0]=grid[0][0]f[0][0] = grid[0][0]f[0][0]=grid[0][0]对于第一行和第一列单独考虑:// 1st col && rowfor (int i = 1; i < grid[0].size(); i++) { f[0][i] = grid[0][i] + f[0][i - 1];}for (i原创 2022-05-10 09:27:08 · 289 阅读 · 0 评论 -
【LeetCode-中等】剑指 Offer 26. 树的子结构(C++实现)
题目链接剑指 Offer 26. 树的子结构实现思路对 A 进行 DFS,沿途进行判断 B 是否是 A 的子结构。如果 A 为空或者 B 为空,根据题目的意思,返回 false。否则,对 A 进行 DFS。if (A == NULL) { return false;}bool ans = isSubTree(A, B);if (ans) { return true;} // ans == falsereturn traversal(A->left, B)原创 2022-05-09 09:11:41 · 202 阅读 · 0 评论 -
【LeetCode-中等】剑指 Offer 32 - III. 从上到下打印二叉树 III(C++实现)
题目链接剑指 Offer 32 - III. 从上到下打印二叉树 III实现思路这道题和实现二叉树层序(题目链接:102. 二叉树的层序遍历)基本一样,只是多了奇偶层数判断。每一次循环的开始,队列的大小就是当前层数的所有节点个数(按照从左到右的顺序);依次把当前节点的左右孩子入队:if (temp->left) { q.push(temp->left);}if (temp->right) { q.push(temp->right);}使用一个 flag 标原创 2022-05-09 08:26:45 · 358 阅读 · 0 评论 -
【LeetCode-简单】112. 路径总和 && 257. 二叉树的所有路径(C++实现)
文章目录112. 路径总和题目链接解题思路实现代码(C++)257. 二叉树的所有路径题目链接解题思路实现代码(C++)112. 路径总和题目链接112. 路径总和解题思路递归处理对每一条路径进行判断。当遍历到叶子结点(root->left == nullptr && root->right == nullptr)时,如果该条路径的和等于给定值,则返回 true,否则返回 false。相似题目:257. 二叉树的所有路径实现代码(C++)class Solut原创 2022-04-10 18:21:29 · 1116 阅读 · 0 评论 -
【LeetCode-简单】1413. 逐步求和得到正数的最小值(C++实现)
文章目录题目链接解题思路实现代码(C++)题目链接1413. 逐步求和得到正数的最小值解题思路题目的意思是从 startValue 开始依次加上 nums[i],过程中不能有小于 1 的值出现。所以可以先创建一个用于记录前 i 项之和的数组容器 f。其中,f[i] == f[i - 1] + nums[i], i = 0, 1, 2, ..., size - 1 (相当于 startValue == 0)。并记录其中出现过的前 i 项的最小和。vector<int> f(size);原创 2022-04-09 17:19:50 · 947 阅读 · 0 评论 -
【LeetCode-简单】101. 对称二叉树(C++实现)
文章目录题目链接实现思路实现代码(C++)题目链接101. 对称二叉树实现思路递归处理递归时,判断左子树和右子树的情况。若都不为空,则对它们的值进行判断。不相等则必定不对称,返回 false。两者相等,则继续对它们的左子树和右子树进行递归处理。if (left != nullptr && right != nullptr) { if (left->val != right->val) { return false; } //原创 2022-04-09 09:28:02 · 334 阅读 · 0 评论 -
【LeetCode-中等】429. N 叉树的层序遍历(C++实现)
文章目录题目链接解题思路实现代码(C++)题目链接429. N 叉树的层序遍历解题思路队列实现题目要求的返回类型为 vector<vector<int>> ,可以用 map 来记录深度。如果 root 为空,则直接返回;否则,将队列的节点设置为 pair<Node*,int>(节点和它的深度)。然后按照 BFS 的过程即可。实现代码(C++)class Solution {public: vector<vector<int&g原创 2022-04-08 09:40:14 · 871 阅读 · 0 评论 -
【LeetCode-简单】100.相同的树(C++实现)
文章目录题目链接实现思路实现代码(C++)题目链接100. 相同的树实现思路递归首先判断 p 和 q 的情况(看他们是否为空)。如果都为空,则返回 true。若只有一个为空,则两棵树不相同,返回 false。if (p == nullptr && q == nullptr) { // 都为空 return true;} // p != nullptr || q != nullptrif (p == nullptr || q == nullptr) { // 只有一个原创 2022-04-07 16:36:17 · 138 阅读 · 0 评论 -
【LeetCode-简单】剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 && 剑指 Offer 68 - II. 二叉树的最近公共祖先(C++实现)
文章目录题目链接解题思路实现代码(C++)题目链接剑指 Offer 68 - II. 二叉树的最近公共祖先解题思路题目问的是二叉树最近的公共祖先。可以用 DFS ,先分别递归查找以当前节点为根节点的树中,是否存在 p->val 和 q->val 。 bool dfs(TreeNode *root, int val) { if (root != NULL) { if (root->val == val) { return tr原创 2022-04-07 15:10:09 · 719 阅读 · 0 评论 -
【LeetCode-简单】110. 平衡二叉树(C++实现)
文章目录题目链接实现思路实现代码(C++)题目链接110. 平衡二叉树实现思路递归处理二叉平衡树的每一个节点的左右子树的高度差的绝对值不超过 1所以,对所给二叉树的每个节点的左右子树进行递归判断高度,计算其平衡因子(即左右子树高度之差)。getDepth() 获取以当前接待为根节点的二叉树的最大深度int getDepth(TreeNode *root, int depth) { if (root != nullptr) { // 如果节点非空,则返回左右子树中的最大深度值原创 2022-04-06 15:09:48 · 286 阅读 · 0 评论 -
【LeetCode-简单】766. 托普利茨矩阵(C++实现)
题目链接766. 托普利茨矩阵实现思路首先,得到矩阵的行数 m 和列数 n 。int m = matrix.size();int n = matrix[0].size();然后,分上半部分(包括主对角线)和下半部分对矩阵进行判断。以上半部分(包括主对角线)为例:for (int i = 0; i < n; i++) { // 主对角线和上半部分 int val = matrix[0][i]; int offset = i; // 偏移量,就是i,为了表示清楚,我单独设原创 2022-04-04 00:07:52 · 955 阅读 · 0 评论 -
【LeetCode-简单】二叉树笔记(C++实现)
文章目录二叉树笔记1 普通二叉树2 二叉搜索树3 N 叉树(普通树)二叉树笔记1 普通二叉树递归,每到一个新的节点就进行相应的处理。剑指 Offer 27. 二叉树的镜像每到一个新的节点,交换它的左右孩子的指向,之后继续递归。class Solution {public: void traversal(TreeNode *root) { if (root != NULL) { TreeNode *temp = root->right;原创 2022-03-27 17:25:52 · 966 阅读 · 0 评论