算法与数据结构(Leetcode题解)
以leetcode练习来加强对算法与数据结构的理解
tiffany0624
这个作者很懒,什么都没留下…
展开
-
区间问题刷题系列
读完本文,题解几类区间问题。本文Leetcode题解:56 合并区间 (Medium)1288 删除被覆盖的区间 (Medium)986 区间列表的交集 (Medium)57 插入区间(Hard)做区间问题最重要的两点:排序和画图排序,当然很重要。如果区间的列表是任意散落的,不方便我们统一区间之间的关系,遍历的时候也会带来些许麻烦。试想一下,区间起始一会从1跳到8,又回到4,我们就没法很好处理他们之间的关系。因此我们通常按照起始起点从小到大排序。画图其实是为了帮助你找到区间与区间的关系。例如原创 2020-09-27 17:01:46 · 241 阅读 · 0 评论 -
二叉树刷题系列(二)
本章leetcode题解654.最大二叉树(难度 Medium)105.从前序与中序遍历序列构造二叉树(难度 Medium)106.从中序与后序遍历序列构造二叉树(难度 Medium)上一篇讲到刷二叉树时需要注意顺序+当前节点操作。今天涉及的三道题实际上还是这么大回事,只不过递归的时候同时引入了分治,因此需要考虑一些边界。654 最大二叉树题目种给出的定义其实挺清楚了。对于一个最大二叉树的建造实际上就是。根为树中的最大元素,并且左右子树也是最大二叉树。OK!那么对于我们就是要找准左右部分,原创 2020-09-24 15:33:15 · 105 阅读 · 0 评论 -
二叉树刷题系列(—)
本篇文章Leetcode题目Leetcode 226 翻转二叉树Leetcode 116 填充每个节点的下一个右侧节点指针Leetcode 114 二叉树展开为链表刷二叉树的题关键在于框架,本质上我们得摸清楚遍历的情况。在做二叉树的时候,重点考虑两个方面。第一,以什么顺序进行遍历,无非就是前序、后序、中序、层序次序上的变种。对于递归函数的调用,我们严格按照函数给出定义去构建。不需要每次过分纠结在一层层递归中,把自己搞晕。因此,递归框架最有助于我们从全局上去分解问题。第二,明确在当前节点要做的原创 2020-09-24 09:55:40 · 199 阅读 · 0 评论 -
动态规划系列——子序/子数组的最值问题
本题leetcode题解Leetcode 53 最大子序和使用动态规划求解连续子数组问题的时需要注意什么呢?首先,对dp数组的定义是什么?一般从题目入手,我一开始会把**dp[i]**定义为nums【0,…,i】中的最大子数组和。当你没有把握的时候,就带着写的这个定义去计算一下,看看是否能通过dp的定义顺利的转移出下一个状态。很快你就会发现, 将dp定义成nums【0,…,i】中的最大子数组和是行不通的。因为题目很明显要问你连续的情形,很有可能dp【4】的最大子数组和是由nums的第一位和第二位原创 2020-10-03 21:02:18 · 213 阅读 · 0 评论 -
动态规划系列---不再为【背包】问题烦恼
本篇文章将站在labuladong文章上对【背包】系列问题进行总结。通过本文,你可以解决一下leetcode问题。leetcode 416 分割等和子集leetcode 518 零钱兑换 ||动态规划帮助我们有效率地遍历问题的解,反复强调的在做动态规划时,需要注意的点有。第一,明确【状态】和【选择】第二,明确dp数组的含义第三,找出状态转移方程式第四,确认好边界(base line)情况一般来说,对于我们比较困难在于第二和第三点,因为两者有密切的练习,我们需要明确含义才能想明白状态之间的改原创 2020-09-20 14:37:59 · 120 阅读 · 0 评论 -
动态规划系列—动态规划VS回溯算法
本篇题解leetcode 494 目标和leetcode 322 零钱兑换leetcode 518 零钱兑换II算法解决问题的核心实际上还是穷举。问题的关键在于如何聪明、有效率地进行进行穷举,这是我们构建合适算法的目标。动态规划和回溯算法看起来有挺多共同之处,都涉及到了【递归】和【做选择】,那么他们之间区分在哪里呢?以及这两者之间是否能够转化?通常来讲,我们使用回溯算法去遍历的时候,就是在使用暴力穷举的方法,当数据量很庞大的时候,显而易见地就会使算法效率变得很低。所以,我们通常会引入“剪枝”的思原创 2020-09-19 16:14:20 · 3458 阅读 · 0 评论 -
算法与数据结构——括号问题一网打尽
本篇leetcode题解leetcode 20 有效的括号leetcode======================================================================================leetcode 20 有效的括号为什么在解决括号匹配问题的时候,需要用到栈这个数据结构呢?我们回想栈的典型特点,先进后出,对于括号匹配问题来说。从中间往两边,距离最近且相互匹配的一对便是一组括号。因此对于括号问题来说,我们可以把其分为左右两个部分来原创 2020-10-05 10:15:47 · 375 阅读 · 0 评论