Given a binary tree, return all root-to-leaf paths. Note: A leaf is a node with no children. Example: Input: 1 / \ 2 3 \ 5 Output: ["1->2->5", "1->3"] Explanation: All root-to-leaf paths are: 1->2->5, 1->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法,真的是昨天做梦都在想=.= 今天早上终于弄懂了,用递归…
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4082 访问. 给定一个二叉树,返回所有从根节点到叶子节点的路径. 说明: 叶子节点是指没有子节点的节点. 输入: 1  /   \ 2     3  \   5 输出: ["1->2->5", "1->3"] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 Given a bi…
二叉树 一.二叉树理论基础 1.满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树.通俗话理解:从底层开始到顶部的所有节点都全部填满的二叉树.深度为k,则有2^k-1个节点 2.完全二叉树:除了最底层节点没有节满,其余每层节点都达到最大值,并且最底层节点全都从最左边开始,按照顺序节若干个节点,中间不能出现空缺部分. 3.搜索二叉树:是一个有序树,遵循左节点小于根节点.右节点大于根节点的原则依次从上到下排列展开. 4.平衡搜索二叉树:是指满足…
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4066 访问. 给定两个二叉树,编写一个函数来检验它们是否相同. 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的. 输入:       1         1                / \       / \              2   3   2   3 [1,2,3],   [1,2,3] 输出: true 输入:      1…
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 二…
      引子:刷题的过程可能是枯燥的,但程序员们的日常确不乏趣味.分享一则LeetCode上名为<打家劫舍 |||>题目的评论: 如有兴趣可以从此题为起点,去LeetCode开启刷题之旅,哈哈.该题目是选择一颗二叉树中对应节点的问题,也是本文收录的一道例题(具体请参考例12). 本文开始分享作者对于LeetCode上有关树的刷题总结.谈到树,很多初学者会感觉很头疼.头疼的重点是其很多解法都离不开递归(或者说是深度优先搜索)的应用.而递归的难点在于其有很多返回值,对于这些返回值的顺序很难理顺…
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刷题的过程中学习到的一些思想和自己的想法,希望通过leetcode提升自己的编程素养 :p 高效leetcode刷题小诀窍(这只是目前对我自己而言的小方法,之后会根据自己的切身经历更新): 算法不是纯粹拼智商的,智商高,就一定很厉害,不够聪明,就一定不行.算法是一种技能,是可以通过科学合理的方式训练出来的能力.目前国内大厂的算法考察,基本不会超过leetcode 中等难度,上限难度基本都是leetcode 中等题里面的中等难度 基本的算法数据结构是有限的.比如说链表…
设计篇 # 题名 刷题 通过率 难度 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% 简…
深度优先搜索篇 # 题名 刷题 通过率 难度 98 验证二叉搜索树   22.2% 中等 99 恢复二叉搜索树   45.1% 困难 100 相同的树   48.1% 简单 101 对称二叉树   42.1% 简单 104 二叉树的最大深度   64.9% 简单 105 从前序与中序遍历序列构造二叉树   52.7% 中等 106 从中序与后序遍历序列构造二叉树   53.3% 中等 108 将有序数组转换为二叉搜索树   58.2% 简单 109 有序链表转换二叉搜索树   57.6% 中等…
栈篇 # 题名 刷题 通过率 难度 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.…
字符串篇 # 题名 刷题 通过率 难度 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-最长公共前缀…
数组篇 # 题名 刷题 通过率 难度 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-三数…
哈希表篇 # 题名 刷题 通过率 难度 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…
目录 1.    为什么我们要刷LeetCode? 2.    LeetCode的现状和问题 3.    本文的初衷 4.    LeetCode刷题建议 4.1入门数据结构,打基础阶段 4.2 建立求职面试解题的思想,刷<剑指Offer> 4.3 系统性地开始刷LeetCode题目 1.  为什么我们要刷LeetCode? LeetCode是面向找IT工作开发岗/算法岗的基本题库,想去BAT等大厂,笔试和面试中的大部头都要考你的算法题的解题技巧和编码能力.然而,对于很多大一大二在校的本科同学…
最近没发什么博客了 凑个数 我的leetcode刷题进展 https://gitee.com/def/leetcode_practice 个人以为 刷题在透不在多  前200的吃透了 足以应付非算法岗的绝大多数情况了…
作者:CYC2018 文章链接:https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Leetcode+%E9%A2%98%E8%A7%A3.md 本文主要介绍的是LeetCode题库中与字符串相关的经典题目,提供了LeetCode原题题号,参考答案,以及题目的部分解析. 大家可以参考这个刷题指南来完成对字符串部分题目的练习,当然,这只是一部分,字符串的相关题目还有很多,譬如最长公共子序列和最长公共子串,这里列举的只是LeetCod…
leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 给定 nums = [2,7,11,15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回[0,1] 分析: 1.题目给出了一个整数数组和目标值,所以定义的函数就该传入这两个参数 2.不能重复使用数组中下标…
Leetcode刷题总结 目前已经刷了50道题,从零开始刷题学到了很多精妙的解法和深刻的思想,因此想按方法对写过的题做一个总结 双指针法 双指针法有时也叫快慢指针,在数组里是用两个整型值代表下标,在链表里是两个指针,一般能实现O(n)的时间解决问题,两个指针的位置一般在第一个元素和第二个元素或者第一个元素和最后一个元素,快指针在前“探路”,当符合某种条件时慢指针向前挪 盛最多水的容器 这道题其实是求最大面积,最大面积取决于较小值.初始时两指针分别位于第一和最后一个元素处,那么明确指针应该向什么方…
Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6-10 ---6.Z 字形变换 ---7.整数反转 ---8.字符串转换整数 (atoi) ---9.回文数 ---10.正则表达式匹配…
数组是算法中最常用的一种数据结构,也是面试中最常考的考点.在LeetCode题库中,标记为数组类型的习题到目前为止,已累计到了202题.然而,这202道习题并不是每道题只标记为数组一个考点,大部分习题都有两到三个考点.比如,考查数组+哈希表.数组+动态规划+数学.数组+回溯等. 看到如此多考点标签,如果盲目地按照一个标签内部所有习题的顺序去刷题,会让人有点错乱感.对于时间比较紧凑的同学来说,题目的数量比较多,想在较短时间内刷完是一个很大的挑战.因此,本文针对时间较紧凑的同学精选一些数组类型的代表…
本文接着上一篇文章<LeetCode刷题总结-数组篇(上)>,继续讲第二个常考问题:矩阵问题. 矩阵也可以称为二维数组.在LeetCode相关习题中,作者总结发现主要考点有:矩阵元素的遍历.矩阵位置的旋转.矩阵行或列次序的交换.空间复杂度为O(1)等.本期共12道题,2道简单题,8道中等题,2道困难题. 例1是杨辉三角的一个延申题,是一道非常经典的矩阵习题,本题理想解法是动态规划,但是也可以采用递归来求解. 例2是一道顺时针访问矩阵元素的习题,在不少面试题中有见到. 例3.例4和例5则强调如果…
本期讲O(n)类型问题,共14题.3道简单题,9道中等题,2道困难题.数组篇共归纳总结了50题,本篇是数组篇的最后一篇.其他三个篇章可参考: LeetCode刷题总结-数组篇(上),子数组问题(共17题) LeetCode刷题总结-数组篇(中),矩阵问题(共12题) LeetCode刷题总结-数组篇(番外),思维转换类型问题(共7题) 本系列50道题是作者在LeetCode题库数组标签中包含的202道题中,按照解答考点分类归纳总结的题型.解法仅供参考,主要在于题目和考点的分类.希望对准备刷Lee…
Python四大数据结构的属性及方法 在LeetCode刷题预备知识一中我们掌握了常见的内置函数,和四大数据结构的基本概念: 但只掌握这些还远远不够,我们还需了解四大数据结构的属性及方法才能更高效快速的解决问题 通过dir()函数可以查看各数据结构的属性及方法 一.列表list的属性及方法 >>dir(list) ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__'…
LeetCode刷题总结-链表 一.链表     链表分为单向链表.单向循环链表和双向链表,一下以单向链表为例实现单向链表的节点实现和单链表的基本操作. 单向链表 单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域.这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值. 表元素域elem用来存放具体的数据: 链接域next用来存放下一个节点的位置(python中的标识): 变量p指向链表的头节点(首节点)的位置,从p出发能找到表…