617. 合并二叉树 617. Merge Two Binary Trees 题目描述 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠. 你需要将他们合并为一个新的二叉树.合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点. LeetCode617. Merge Two Binary Trees 示例 1: 输入: ``` Tree 1 Tree 2 1 2 / \ / \ 3 2 1 3…
Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not. You need to merge them into a new binary tree. The merge rule is that if two nodes overlap, then…
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4074 访问. 给定一个二叉树,判断它是否是高度平衡的二叉树. 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1. 给定二叉树 [3,9,20,null,null,15,7] 3       / \     9  20    /       \  15        7 返回 true . 给定二叉树 [1,2,2,3…
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4080 访问. 翻转一棵二叉树. 输入: 4    /   \   2     7  / \   / \ 1   3 6   9 输出: 4    /   \   7     2  / \   / \ 9   6 3   1 备注:这个问题是受到 Max Howell 的 原问题 启发的 : 谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无…
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4096 访问. 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠. 你需要将他们合并为一个新的二叉树.合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点. 输入:  Tree 1                     Tree 2              …
题目描述: 翻转一棵二叉树. 解题思路: 1.对于二叉树,立马递归 2.先处理 根节点,不需改动 3.处根的左子树和右子树需要交换位置 4.递归处理左子树和右子树.步骤见1-3步 Java代码实现: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */…
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4068 访问. 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1      /   \    2     2   / \    / \ 3  4 4  3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1    /   \  2     2    \     \     3  …
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST. 题解:开始想到的方法比较偷懒,直接遍历一遍数组,把每个ListNode对应的值放到数组里面,然后把数组转换成BST,想来这个题的本意肯定不是这样. 自己也想到了bottom-up的方法,但是没想明白怎么个bottom-up法,真的是昨天做梦都在想=.= 今天早上终于弄懂了,用递归…
Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 题解:递归就可以了. Java代码如下: /** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val =…
树篇 # 题名 刷题 通过率 难度 94 二叉树的中序遍历   61.6% 中等 95 不同的二叉搜索树 II   43.4% 中等 96 不同的二叉搜索树   51.6% 中等 98 验证二叉搜索树   22.2% 中等 99 恢复二叉搜索树   44.8% 困难 100 相同的树 C#LeetCode刷题之#100-相同的树(Same Tree) 48.0% 简单 101 对称二叉树 C#LeetCode刷题之#101-对称二叉树(Symmetric Tree) 42.0% 简单 102 二…
字符串篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串   24.6% 中等 5 最长回文子串   22.4% 中等 6 Z字形变换   35.8% 中等 8 字符串转整数 (atoi)   15.3% 中等 10 正则表达式匹配   18.4% 困难 12 整数转罗马数字   53.8% 中等 13 罗马数字转整数 C#LeetCode刷题之#13-罗马数字转整数(Roman to Integer) 53.7% 简单 14 最长公共前缀 C#LeetCode刷题之#14-最长公共前缀…
617. 合并二叉树 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠. 你需要将他们合并为一个新的二叉树.合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点. 示例 1: 输入: Tree 1 Tree 2 1 2 / \ / \ 3 2 1 3 / \ \ 5 4 7 输出: 合并后的树: 3 / \ 4 5 / \ \ 5 4 7 注意: 合并必须从两个树的根节点开始. /** * D…
最新更新时间 11:22:29 8. String to Integer (atoi) public static int myAtoi(String str) { // 1字符串非空判断 ""||" " if (str.isEmpty() || str.trim().isEmpty()) { return 0; } int index = 0; int sign = 1; int total = 0; //1检测第一个非空字符串是什么 while (str.cha…
      引子:刷题的过程可能是枯燥的,但程序员们的日常确不乏趣味.分享一则LeetCode上名为<打家劫舍 |||>题目的评论: 如有兴趣可以从此题为起点,去LeetCode开启刷题之旅,哈哈.该题目是选择一颗二叉树中对应节点的问题,也是本文收录的一道例题(具体请参考例12). 本文开始分享作者对于LeetCode上有关树的刷题总结.谈到树,很多初学者会感觉很头疼.头疼的重点是其很多解法都离不开递归(或者说是深度优先搜索)的应用.而递归的难点在于其有很多返回值,对于这些返回值的顺序很难理顺…
算法和数据结构知识点图 首先,了解算法和数据结构有哪些知识点,在后面的学习中有 大局观,对学习和刷题十分有帮助. 下面是我花了一天时间花的算法和数据结构的知识结构,大家可以看看. 后面是为大家 精心挑选的LeetCode题单,并根据题目知识点的类型分好了类别,大家可以根据每个知识点,进行有针对性的刷题. 数据结构 数组&双指针 LeetCode 1. 两数之和 LeetCode 4. 寻找两个正序数组的中位数 LeetCode 15. 三数之和 LeetCode 75. 颜色分类 LeetCod…
主要用于记录在LeetCode刷题的过程中学习到的一些思想和自己的想法,希望通过leetcode提升自己的编程素养 :p 高效leetcode刷题小诀窍(这只是目前对我自己而言的小方法,之后会根据自己的切身经历更新): 算法不是纯粹拼智商的,智商高,就一定很厉害,不够聪明,就一定不行.算法是一种技能,是可以通过科学合理的方式训练出来的能力.目前国内大厂的算法考察,基本不会超过leetcode 中等难度,上限难度基本都是leetcode 中等题里面的中等难度 基本的算法数据结构是有限的.比如说链表…
数组篇 # 题名 刷题 通过率 难度 1 两数之和 C#LeetCode刷题之#1-两数之和(Two Sum) 43.1% 简单 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组的中位数(Median of Two Sorted Arrays)-该题未达最优解 30.1% 困难 11 盛最多水的容器 C#LeetCode刷题之#11-盛最多水的容器(Container With Most Water) 37.9% 中等 15 三数之和 C#LeetCode刷题之#15-三数…
递归 104.二叉树的最大深度 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public int maxDepth(TreeNode root) { if(root==null) return 0; retu…
leetcode刷题目录 1. 两数之和 2. 两数相加 3. 无重复字符的最长子串 4. 寻找两个有序数组的中位数 5. 最长回文子串 6. Z 字形变换 7. 整数反转 8. 字符串转换整数 (atoi) 9. 回文数 11. 盛最多水的容器 12. 整数转罗马数字 13. 罗马数字转整数 14. 最长公共前缀 15. 三数之和 16. 最接近的三数之和 17. 电话号码的字母组合 19. 删除链表的倒数第N个节点 20. 有效的括号 21. 合并两个有序链表 22. 括号生成 23. 合并…
昨天是元宵节,过完元宵节相当于这个年正式过完了.不知道大家有没有投入继续投入紧张的学习工作中.年前我想开一个Leetcode刷题专栏,于是发了一个投票想了解大家的需求征集意见.投票于2019年2月1日截止,共有204人参加,根据投票结果显示,大多数人希望通过刷LeetCode能够提高代码水平,在工作中和面试中有帮助,然而有一半人没有接触过Leetcode,一半人接触过,但只刷了一点.几乎所有投票的人刷题的数量都小于100题,说明大家对刷题的认识和热情都还比较浅,可能是因为刷题比较枯燥,又不能马上…
本文讲解有关树的习题中子树问题和新概念定义问题,也是有关树习题的最后一篇总结.前两篇请参考: LeetCode刷题总结-树篇(上) LeetCode刷题总结-树篇(中) 本文共收录9道题,7道中等题,2道困难题.本篇总结的知识点请参考下图: 1 新概念定义问题 本部分收录习题如下: 117.填充每个节点的下一个右侧节点指针II, 难度: 中等 297.二叉树的序列化与反序列化,难度:困难 114.二叉树展开为链表,难度: 中等 998.最大二叉树II, 难度:中等 834.树中距离之和,难度:困…
本篇接着<LeetCode刷题总结-树篇(上)>,讲解有关树的类型相关考点的习题,本期共收录17道题,1道简单题,10道中等题,6道困难题. 在LeetCode题库中,考察到的不同种类的树有七种,分别是二叉搜索树.平衡二叉树.满二叉树.完全二叉树.线段树.字典树和树状数组.每一种类型的树,有着不同的特性以及对应的考察重点.考察重点可参考下图,下文按照树的类型分别划分了一个目录章节,并给出了对应的经典习题. 1 二叉树搜索树 基本定义:又称二叉查找树,二叉排序树.若它的左子树不空,则左子树上所有…
LeetCode刷题总结-链表 一.链表     链表分为单向链表.单向循环链表和双向链表,一下以单向链表为例实现单向链表的节点实现和单链表的基本操作. 单向链表 单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域.这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值. 表元素域elem用来存放具体的数据: 链接域next用来存放下一个节点的位置(python中的标识): 变量p指向链表的头节点(首节点)的位置,从p出发能找到表…
设计篇 # 题名 刷题 通过率 难度 146 LRU缓存机制   33.1% 困难 155 最小栈 C#LeetCode刷题之#155-最小栈(Min Stack) 44.9% 简单 173 二叉搜索树迭代器   49.2% 中等 208 实现 Trie (前缀树)   48.5% 中等 211 添加与搜索单词 - 数据结构设计   40.0% 中等 225 用队列实现栈 C#LeetCode刷题之#225-用队列实现栈(Implement Stack using Queues) 50.0% 简…
排序篇 # 题名 刷题 通过率 难度 56 合并区间   31.2% 中等 57 插入区间   30.4% 困难 75 颜色分类   48.6% 中等 147 对链表进行插入排序   50.7% 中等 148 排序链表   52.7% 中等 164 最大间距   43.0% 困难 179 最大数   26.7% 中等 242 有效的字母异位词 C#LeetCode刷题之#242-有效的字母异位词(Valid Anagram) 47.2% 简单 274 H指数   28.5% 中等 324 摆动排…
栈篇 # 题名 刷题 通过率 难度 20 有效的括号 C#LeetCode刷题之#20-有效的括号(Valid Parentheses) 33.0% 简单 42 接雨水   35.6% 困难 71 简化路径   27.0% 中等 84 柱状图中最大的矩形   32.2% 困难 85 最大矩形   38.1% 困难 94 二叉树的中序遍历   61.4% 中等 103 二叉树的锯齿形层次遍历   43.1% 中等 144 二叉树的前序遍历   52.6% 中等 145 二叉树的后序遍历   60.…
分治算法篇 # 题名 刷题 通过率 难度 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组的中位数(Median of Two Sorted Arrays)-该题未达最优解 30.9% 困难 23 合并K个排序链表   39.4% 困难 53 最大子序和 C#LeetCode刷题之#53-最大子序和(Maximum Subarray)-该题包含分治讨论 38.4% 简单 169 求众数 C#LeetCode刷题之#169-求众数(Majority Element) 52.3…
双指针篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串   24.5% 中等 11 盛最多水的容器   43.5% 中等 15 三数之和   16.1% 中等 16 最接近的三数之和   34.6% 中等 18 四数之和   29.8% 中等 19 删除链表的倒数第N个节点   29.6% 中等 26 删除排序数组中的重复项 C#LeetCode刷题之#26-删除排序数组中的重复项(Remove Duplicates from Sorted Array) 39.8% 简单 27 移除元…
链表篇 # 题名 刷题 通过率 难度 2 两数相加   29.0% 中等 19 删除链表的倒数第N个节点   29.4% 中等 21 合并两个有序链表 C#LeetCode刷题之#21-合并两个有序链表(Merge Two Sorted Lists) 49.2% 简单 23 合并K个排序链表   38.6% 困难 24 两两交换链表中的节点   52.6% 中等 25 k个一组翻转链表   44.7% 困难 61 旋转链表   33.7% 中等 82 删除排序链表中的重复元素 II   35.0…
哈希表篇 # 题名 刷题 通过率 难度 1 两数之和 C#LeetCode刷题之#1-两数之和(Two Sum) 42.8% 简单 3 无重复字符的最长子串   24.2% 中等 18 四数之和   29.4% 中等 30 与所有单词相关联的字串   20.2% 困难 36 有效的数独   46.6% 中等 37 解数独   46.8% 困难 49 字母异位词分组   46.9% 中等 76 最小覆盖子串   29.6% 困难 85 最大矩形   37.5% 困难 94 二叉树的中序遍历   6…