随笔分类 -  labuladong的算法小抄

对labuladong算法小抄进行复习的部分想法
摘要:337. 打家劫舍 III 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。 除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直接相连的房子在同一天晚上被打劫 ,房屋 阅读全文
posted @ 2022-04-13 10:15 BailanZ 阅读(27) 评论(0) 推荐(0) 编辑
摘要:双指针技巧秒杀七道数组题目 在处理数组和链表相关问题时,双指针技巧是经常用到的,双指针技巧主要分为两类:左右指针和快慢指针。 所谓左右指针,就是两个指针相向而行或者相背而行;而所谓快慢指针,就是两个指针同向而行,一快一慢。 一、快慢指针技巧 数组问题中比较常见且难度不高的的快慢指针技巧,是让你原地修 阅读全文
posted @ 2022-04-05 10:12 BailanZ 阅读(53) 评论(0) 推荐(0) 编辑
摘要:双指针技巧秒杀七道链表题目(2) 单链表的倒数第 k 个节点 从前往后寻找单链表的第 k 个节点很简单,一个 for 循环遍历过去就找到了,但是如何寻找从后往前数的第 k 个节点呢? 这个解法就比较巧妙了,假设 k = 2,思路如下: 首先,我们先让一个指针 p1 指向链表的头节点 head,然后走 阅读全文
posted @ 2022-04-04 11:15 BailanZ 阅读(56) 评论(0) 推荐(0) 编辑
摘要:双指针技巧秒杀七道链表题目 对于单链表相关的题目,双指针的运用是非常广泛的 例如: 1、合并两个有序链表 2、合并 k 个有序链表 3、寻找单链表的倒数第 k 个节点 4、寻找单链表的中点 5、判断单链表是否包含环并找出环起点 6、判断两个单链表是否相交并找出交点 合并两个有序链表 最基本的链表技巧 阅读全文
posted @ 2022-04-03 11:56 BailanZ 阅读(31) 评论(0) 推荐(0) 编辑
摘要:二叉树(纲领篇) 二叉树解题的思维模式分两类: 1、是否可以通过遍历一遍二叉树得到答案?如果可以,用一个 traverse 函数配合外部变量来实现,这叫「遍历」的思维模式。 2、是否可以定义一个递归函数,通过子问题(子树)的答案推导出原问题的答案?如果可以,写出这个递归函数的定义,并充分利用这个函数 阅读全文
posted @ 2022-04-02 10:08 BailanZ 阅读(27) 评论(0) 推荐(0) 编辑
摘要:BFS 算法解题套路框架 BFS 的核心思想应该不难理解的,就是把一些问题抽象成图,从一个点开始,向四周开始扩散。一般来说,我们写 BFS 算法都是用「队列」这种数据结构,每次将一个节点周围的所有节点加入队列。 特点:BFS 找到的路径一定是最短的,但代价就是空间复杂度可能比 DFS 大很多 一、算 阅读全文
posted @ 2022-04-01 09:49 BailanZ 阅读(85) 评论(0) 推荐(0) 编辑
摘要:回溯算法解题套路框架 其实回溯算法其实就是我们常说的 DFS 算法,本质上就是一种暴力穷举算法。 解决一个回溯问题,实际上就是一个决策树的遍历过程。 站在回溯树的一个节点上,你只需要思考 3 个问题: 1、路径:也就是已经做出的选择。 2、选择列表:也就是你当前可以做的选择。 3、结束条件:也就是到 阅读全文
posted @ 2022-03-29 10:22 BailanZ 阅读(183) 评论(0) 推荐(0) 编辑
摘要:动态规划问题的一般形式就是求最值:例如求最长递增子序列,最小编辑距离等等 求解动态规划的核心问题是穷举:因为要求最值,所以要把可行答案穷举出来找最值 重叠子问题:动态规划的穷举有时会存在【重叠子问题】,如果单纯的暴力穷举的话效率往往十分低下,所以一般需要【备忘录】或者【DP table】来优化过程 阅读全文
posted @ 2022-03-26 09:45 BailanZ 阅读(66) 评论(0) 推荐(0) 编辑
摘要:短暂记录下对于《算法小抄》的学习,因为对于文章的学习遇到瓶颈,决定暂时暂停,对于前面所有文章进行复习 一、数据结构的存储方式 数据结构的存储方式只有两种:数组(顺序存储)和链表(链式存储) 对于问题的分析一定要有递归的思想,自顶向下,从抽象到具体 。对于散列表、栈、树堆等等数据结构其实都属于【上层建 阅读全文
posted @ 2022-03-26 08:38 BailanZ 阅读(39) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示