
LeetCode刷题记录
记录每一天自己的刷题记录
权左
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ string类的insert函数的介绍及使用
1.在特定位置插入const char *字符串(1)string &insert(int p0, const char *s)功能:在原字符串下标为pos的字符前插入字符串str返回值:插入字符串后的结果(2)string &insert(int p0, const char *s, int n);功能:在p0位置插入字符串s的前n个字符返回值:插入字符串后的结果 string str1="Working people "; string str2="Wor原创 2020-11-08 18:48:10 · 11360 阅读 · 1 评论 -
[c++]查找二叉树根节点到任意结点的路径
今天在做leetcode236时受到启发,怎么求二叉树根节点到二叉树任意结点(该节点在二叉树中存在)的路径?当然,前提是二叉树各节点的值不相等。示例输入:root = [3,5,1,6,2,0,8,null,null,7,4] ,target=4输出:{3,5,2,4}思路一:我们可以用哈希表存储所有节点的父节点,根节点的父节点设为nullptr;然后我们就利用节点的父节点信息从target节点开始不断往查找,并将当前结点的值存储到ans中,直到查找到nullptr。ans最终存储的是target原创 2020-10-22 22:12:45 · 2549 阅读 · 0 评论 -
[C++]leetcode题解之二叉搜索树的最近公共祖先
问题描述:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例:思路:题目中给出的是一棵「二叉搜索树」,因此我们可以快速地找出树中的某个节点以及从根节点到该节点的路径,例如我们需要找到节点 p:我们从根节点开始遍历;如果当前节点就是 p,那么成功地找到了节点;如果当前节点的值大于 p 的值,说明 p 应该在当前原创 2020-10-22 21:47:59 · 385 阅读 · 0 评论 -
[C++]leetcode题解之二叉树的中序遍历
记录每天leetcode刷题时间:2020年10月19日leetcode94问题描述:给定一个二叉树,返回它的中序 遍历。示例:了解:二叉树的中序遍历的访问顺序为先访问左孩子结点,再访问根节点,最后访问右孩子结点。方法:(1)递归递归的思路很简单。void inOrder(TreeNode *root,vector<int>&ans){ if(root== nullptr) return; inOrder(root->left.原创 2020-10-19 19:53:24 · 197 阅读 · 0 评论 -
[C++]leetcode题解之二叉树的后序遍历
时间:2020年10月18日leetcode145示例:了解:二叉树的后序遍历的访问顺序为先访问左孩子结点,再访问右孩子结点,最后访问根节点。方法:(1)递归void PostOrder(TreeNode *root,vector<int>&ans){ if(root== nullptr) return; PostOrder(root->left,ans); //先访问左孩子结点 PostOrder(root->righ原创 2020-10-18 21:49:21 · 218 阅读 · 0 评论 -
[C++]leetcode617题解之谁能教我学递归!!!
时间:2020年10月17日leetcode617问题描述:给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例:思路:根据前序遍历的思想,递归遍历两棵树,生成新的二叉树。方法: TreeNode *mergeTrees(TreeNode *t1, TreeNode *t2) { if原创 2020-10-17 21:28:13 · 169 阅读 · 0 评论 -
[C++]leetcode102题解之二叉树的层次遍历
时间:2020年10月16日leetcode102问题描述:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:思路:广度优先搜索。广度优先搜索框架:int BFS(){ 定义队列; 定义备忘录,避免走回头路 //如果是二叉树,则不用定义备忘录;需要根据具体情况分析 边界判断。 将起始位置加入到队列中,同时更新备忘录。 while (队列不为空) { 获取当前队原创 2020-10-16 21:02:16 · 198 阅读 · 0 评论 -
[C++]leetcode572题解之另一个树的子树
时间:2020年10月15日leetcode572问题描述:给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例:思路:首先递归求出s的子树,然后再将s的子树分别与二叉树t比较。如果存在子树与t相等,则返回true。方法:递归//判断两棵树是否相等 bool isEqualTree(TreeNode *s,TreeNode *t){ if(s==nul原创 2020-10-15 20:44:55 · 236 阅读 · 0 评论 -
[C++]leetcode144题解之二叉树的前序遍历
时间:2020年10月14日问题描述:给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3]1\2/3输出: [1,2,3]了解:二叉树的前序遍历也称为先序遍历,其访问顺序为先访问根节点,然后再访问根节点的左孩子结点,最后在访问根节点的右孩子结点。方法:(1)递归void preOrder(TreeNode *root, vector<int> &ans) { if (root == nullptr) return;原创 2020-10-14 20:54:29 · 236 阅读 · 2 评论 -
[C++]leetcode234回文链表
今天受实验室同学的启发,决定以后记录每天自己的leetcode的刷天记录,另外希望自己在做题时时能够深入思考,争取做到每做一题都能够有所收获。问题描述:请判断一个链表是否为回文链表。示例:输入: 1->2输出: false输入: 1->2->2->1输出: true进阶:你能否使用O(n)的时间复杂度和O(1)空间复杂度思路:首先利用快慢指针找到链表的中间结点,然后再将链表从中间节点分割生成两个链表,最后比较两个链表是否相等//找到链表的中间结点,并从中间结点将链原创 2020-10-13 17:07:39 · 292 阅读 · 0 评论