LeetCode题解
以LeetCode刷题为主,争取做到每日一题
~永远永远~
这个作者很懒,什么都没留下…
展开
-
cc++ leetcode 897. 递增顺序查找树
c/c++ leetcode 897. 递增顺序查找树题目描述897. 递增顺序查找树难度简单92给你一个树,请你 按中序遍历 重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。示例 :输入:[5,3,6,2,4,null,8,1,null,null,null,7,9] 5 / \ 3 6 / \ \ 2 4 8 / / \ 1 7 9输出:[1,nu原创 2020-08-18 00:05:16 · 243 阅读 · 0 评论 -
c++ Qt 元对象系统笔记
c++ Qt 元对象系统笔记元对象元对象系统是一个基于标准C++的扩展,为Qt提供了信号与槽机制、实时类型信息、动态属性系统。元对象系统的三个基本条件:1.类必须继承自QObject2.类声明Q_OBJECT宏(默认私有有)3.元对象编译器moc。信号与槽机制与moc编译器信号和槽机制是 QT 的核心机制,信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,信号和槽是QT自行定义的一种通信机制,它独立于标准的 C/C++ 语言,要正确的处理信号和槽,必须借助一个称为 moc(M原创 2020-08-16 22:55:19 · 623 阅读 · 0 评论 -
cc++ leetcode 226. 翻转二叉树
c/c++ leetcode 226. 翻转二叉树题目描述:226. 翻转二叉树难度简单537翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1解法一:递归//需要注意的是子树只有一个节点时也需要翻转 ,前序和后序没有问题,只是中序需要点额外的操作,如果翻转节点后就访问的是左子树而不是右子树 TreeNod原创 2020-08-16 20:55:12 · 210 阅读 · 0 评论 -
cc++ leetcode 538.把二叉搜索树转换为累加树
c/c++ leetcode 538.把二叉搜索树转换为累加树题目描述538. 把二叉搜索树转换为累加树难度简单304给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 原始二叉搜索树: 5 / \ 2 13输出: 转换为累加树: 18原创 2020-08-15 15:33:16 · 151 阅读 · 0 评论 -
cc++ leecode 783.二叉搜索树节点最小距离
c/c++ leecode 783.二叉搜索树节点最小距离一.题目描述(链接):783. 二叉搜索树节点最小距离难度简单70给定一个二叉搜索树的根节点 root,返回树中任意两节点的差的最小值。示例:输入: root = [4,2,6,1,3,null,null]输出: 1解释:注意,root是树节点对象(TreeNode object),而不是数组。给定的树 [4,2,6,1,3,null,null] 可表示为下图: 4 / \原创 2020-08-12 15:17:55 · 179 阅读 · 0 评论 -
cc++ leetcode 257. 二叉树的所有路径
c/c++ leetcode 257. 二叉树的所有路径一.题目描述257. 二叉树的所有路径难度简单308给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入: 1 / \2 3 \ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3解法一: 递归我的代码有些问题主要的功能实现了就在第二条路径之后的路径根原创 2020-08-11 23:53:47 · 231 阅读 · 0 评论 -
cc++ leetcode 700.二叉搜索树中的搜索
c/c++ leetcode 700.二叉搜索树中的搜索题目描述:700. 二叉搜索树中的搜索难度简单80给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。例如,给定二叉搜索树: 4 / \ 2 7 / \ 1 3和值: 2你应该返回如下子树: 2 / \ 1 3在上原创 2020-08-10 22:43:33 · 210 阅读 · 0 评论 -
cc++ leetcode 404.左节点之和
c/c++ leetcode 404.左节点之和题目描述404. 左叶子之和难度简单178计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24解法一,递归遍历整个二叉树,找到根节点有left 节点 并且没有左右子节点 sum+ = 根节点的left节点的val;class Solution {public: int sumOfLeftLeaves原创 2020-08-09 22:54:47 · 84 阅读 · 0 评论 -
cc++ leetcode 二叉树和二叉搜索树的最近公共祖先
c/c++ leetcode 二叉树和二叉搜索树的最近公共祖先236. 二叉树的最近公共祖先:236. 二叉树的最近公共祖先难度中等686给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入:原创 2020-08-09 00:51:38 · 171 阅读 · 0 评论 -
cc++ leetcode 155.最小栈
c/c++ leetcode 155.最小栈题目描述:155. 最小栈难度简单634设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。解法一:双栈class MinStack { stack<int> s; stack<int> minStack;原创 2020-08-07 22:54:59 · 130 阅读 · 0 评论 -
cc++ leetcode N叉树的前后遍历
c/c++ leetcode N叉树的前后遍历前序遍历题目描述589. N叉树的前序遍历难度简单91给定一个 N 叉树,返回其节点值的前序遍历。例如,给定一个 3叉树 :返回其前序遍历: [1,3,5,6,2,4]。解法一: 递归前序遍历的访问顺序:根节点 -> 左子树 -> 右子树;需要注意的是这返回的结果不能局部的变量 ,也不可以是值传递;class Solution {public: vector<int> preorder2(Node*原创 2020-08-06 23:37:39 · 303 阅读 · 0 评论 -
c/c++ leetcode 84.柱状图中最大的矩形
题目描述:84. 柱状图中最大的矩形难度困难827给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。解法一: 枚举底需要注意的是一根柱子的面积是它的高,不是0;int largestRectangleArea(vector<int>& heights) { int length = heights.原创 2020-08-06 02:14:56 · 460 阅读 · 0 评论 -
cc++ leetcode 判断链表是否有环 新思路翻转这个链表
题目描述:141. 环形链表难度简单699给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。解法一: 快慢指针这个题非常简单,通常的做法是设置快慢指针,快指针走两步,慢指针走一步而两指针相遇,说明有环class Solution {public: bool hasCycle(ListNode *head) { if (!head || !(h原创 2020-08-04 16:37:11 · 209 阅读 · 0 评论 -
c++ leetcode 24题两两交换链表节点8行代码非递归感受一下代码支配的恐怖吧!
c++ leetcode 24题两两交换链表节点8行代码非递归感受一下代码支配的恐怖吧!前言做完了题,昨天晚上看了一下国际站,这人就是覃超老师说的光头哥(其实人家是有头发的),覃超老师对他的评价是"这人经常玩代码艺术",一看标题的话可能觉得他用的是递归,这个题的话一般循环都在20行开外,点开一看,不看不知道一看吓一跳啊,链接: https://leetcode.com/problems/swap-nodes-in-pairs/discuss/11019/7-8-lines-C%2B%2B-Pytho原创 2020-08-03 14:24:16 · 141 阅读 · 0 评论 -
cc++ leetcode 二二交换链表节点
c/c++ leetcode 二二交换链表节点题目描述:24. 两两交换链表中的节点难度中等574给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.解法一:迭代(最优解)(C语言)这是借鉴这位老哥的,他的思想很好,不好意思没有找到他的链接,这道题是我半个月前做的一道题,回顾了以前刷的题是很有必要的,老哥,要是看到的原创 2020-08-02 20:14:47 · 205 阅读 · 0 评论 -
cc++ leetcode 翻转链表
c/c++ leetcode 翻转链表题目描述206. 反转链表难度简单1133反转一个单链表。解法一: 迭代(最优解)假设 第一个节点前面有一个NULL节点,ListNode* reverseList(ListNode* head) { if (!head || !(head -> next)) return head; //pre 是上一个节点 curr是当前的节点 last 为 保存下一个节点 ListNode * pre = NULL原创 2020-08-01 23:36:47 · 90 阅读 · 0 评论 -
cc++ LeetCode 爬楼梯
c/c++ LeetCode 爬楼梯问题描述:70. 爬楼梯难度简单1164假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?**注意:**给定 n 是一个正整数;解法一: 动态规划状态转移方程 n == 1 dp[1] = 1; n == 2 时 dp[2] = 2; n == k 时 (k > 2) dp[k]原创 2020-07-31 17:09:34 · 207 阅读 · 0 评论 -
c++ leetcode 三数之和
c++ leetcode 三数之和题目描述:15. 三数之和难度中等2433给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 *a,b,c ,*使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。**注意:**答案中不可以包含重复的三元组。一双指针法(最优解)通过先进行排序之后,k 指向最小的元素i 指向下标为k + 1 的元素,j 指向最后一个元素(最大的元素);通过三个指向的元素相加,判断应该移动i 或者j; 三数相加> 0 ,j -原创 2020-07-30 23:50:06 · 446 阅读 · 0 评论 -
c++ lesetcode 刷题 盛最多水的容器
c++ lesetcode 刷题 盛最多水的容器文章目录c++ lesetcode 刷题 盛最多水的容器题目链接 :[11. 盛最多水的容器](https://leetcode-cn.com/problems/container-with-most-water/)一.暴力解法时空复杂度分析:二. 双指针解法(最优解)题目链接 :11. 盛最多水的容器难度中等1679给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端原创 2020-07-30 01:00:13 · 264 阅读 · 0 评论 -
cc++ leetcode 最长连续递增序列
c/c++ leetcode 最长连续递增序列文章目录c/c++ leetcode 最长连续递增序列题目链接:一.滑动窗口算法时空复杂度分析二.动态规划时空复杂度分析三.快慢指针时空复杂度分析四.分治算法:时空复杂度分析;题目链接:https://leetcode-cn.com/problems/longest-continuous-increasing-subsequence/给定一个未经排序的整数数组,找到最长且连续的的递增序列,并返回该序列的长度。一.滑动窗口算法temp和存储最后答案的变原创 2020-07-28 22:30:24 · 698 阅读 · 0 评论 -
c 语言 leetcode k个一组翻转链表
c 语言 k个一组翻转链表题目给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1->4->5说明:你的算法只能使用常数的额外空间。你不能只原创 2020-05-18 22:00:17 · 246 阅读 · 0 评论 -
C语言 leetcode 刷题 个人笔记
C语言 leetcode 刷题 个人笔记经过这几天的打磨,也是找到一点门路了,前二天都快把我整绝望了,就简单的算法题,我得想半天,脑子不够用,现在好多了正在努力.第一题题目将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/probl原创 2020-05-14 01:27:53 · 734 阅读 · 0 评论 -
C语言 LeetCode two sum 问题和 实现一个mySqrt函数
C语言 刷算法题 第一天 个人笔记前言我在leetcode 网站上做的题,有些东西真的很坑在它的网站上做,它会给你个函数让你实现一个功能,提醒一下,你不要更改它给你的那个函数参数,函数返回值,不用你自己写main()函数,(第一天不知道很悲催欲哭无泪啊)第一题题目实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。来源:力扣(LeetCode)链接:https://leetcode-cn.原创 2020-05-09 19:02:35 · 379 阅读 · 0 评论