个人笔记极客时间算法训练营
babenban
这个作者很懒,什么都没留下…
展开
-
笔记1 第17课 字符串处理 ——Atoi,Rabin-Karp实现strstr,最长回文子串,正则表达式匹配,KMP匹配—— 极客时间算法
着重理解a*这两个字母是一个整体,它可以匹配任意数量的a,包括0,所以起点要多注意。可以删除一个字母,可以用递归的方式,遇到错误选择忽略一次,从两种下一个位置再递归判断。之前收藏了极客时间的算法训练营3期共21课,计划每一课写博客来记录学习,主要形式为。传string这些容器的时候还是写上引用最好,传值和传址差的太多了,差点超时。f[i][j]表示,前i个位置,能匹配前j个目标的方案数,将位置向后推,要么不用这个新位置来匹配,要么用这个新位置匹配,对应两种转移方法。先算哈希值,再比对,...原创 2022-07-30 22:59:03 · 1358 阅读 · 1 评论 -
笔记1 第16课 图论算法 ——bellman-ford, dijkstra, Floid, Kruskal ——极客时间算法
之前收藏了极客时间的算法训练营3期共21课,计划每一课写博客来记录学习,主要形式为。主要记录和理解代码,所以基本完全搬运了视频题解代码,题目大体来自leetcode和acwing。个人学习感受体现在大致思路的总结和注释上。最多n-1轮,可以处理有负数边的情况。floid得到所有最短距离,再统计。最朴素的Kruskal,,超时。...原创 2022-07-29 15:10:46 · 1486 阅读 · 0 评论 -
笔记1 第15课 字典树,并查集 ——实现字典树,单词搜索,省份数量,被围绕的区域——极客时间算法
之前收藏了极客时间的算法训练营3期共21课,计划每一课写博客来记录学习,主要形式为。先按照利润大的卖,卖的时候考虑最后的时机,用并查集来维护相应日期前的最后可用日期。主要记录和理解代码,所以基本完全搬运了视频题解代码,先把单词记录在字典树中,再根据前缀进行有选择的dfs。题目大体来自leetcode和acwing。个人学习感受体现在大致思路的总结和注释上。找过的单词会在字典树中删除,以加快速度。利用并查集,查询每个点与外界的联系、并查集,看根节点有几个即可。利用开关来整合相似的功能。......原创 2022-07-28 14:40:37 · 1370 阅读 · 0 评论 -
笔记1 第14课 动规的优化 ——满足不等式的最大值,环形子数组最大值戳气球,合并石头的最低成本,打家劫舍树形版——极客时间算法
之前收藏了极客时间的算法训练营3期共21课,计划每一课写博客来记录学习,主要形式为。树形动规,在处理孩子是否存在的问题上,使用了对空指针赋值的方法。主要记录和理解代码,所以基本完全搬运了视频题解代码,特例解法,挖一块最小值减去它或者直接找到最大值。题目大体来自leetcode和acwing。三个参数,两个规定区间,第三个是区间内有几堆。个人学习感受体现在大致思路的总结和注释上。动规的转移优化,优化第二层循环。循环进行,需要考虑遍历每个长度。滑动窗口做法,维护最大值。区间内,最后一个戳哪个。......原创 2022-07-27 22:13:33 · 248 阅读 · 0 评论 -
笔记1 第13课 动规2 ——买卖股票最佳时机,打家劫舍,零钱找兑——极客时间算法
之前收藏了极客时间的算法训练营3期共21课,计划每一课写博客来记录学习,主要形式为。头尾相接,进行两次递归,第一次尝试偷第一家,第二次尝试最后一家。主要记录和理解代码,所以基本完全搬运了视频题解代码,注意初始化的值,为直接构建相应单词所需要的字母数量。完全背包问题,相应位置加上之前位置的方案总和。个人学习感受体现在大致思路的总结和注释上。|=可以对int使用,但是bool不行。今天的状态规划明天的状态,向后规划。每一天都有持股和不持股的两种状态。初始化时每一种状态初始值都是极小。即找等于总和一半的子集,..原创 2022-07-24 19:40:47 · 219 阅读 · 0 评论 -
笔记1 第12课 动规第一课 ——最长公共子序列,乘积最大子数组——极客时间算法
之前收藏了极客时间的算法训练营3期共21课,计划每一课写博客来记录学习,主要形式为。主要记录和理解代码,所以基本完全搬运了视频题解代码,字母相等,是i-1,j-1位置上的长加1。题目大体来自leetcode和acwing。个人学习感受体现在大致思路的总结和注释上。乘积有正有负,最大值最小值对计算都有帮助。每一个位置寻找之前所有位置,进行比较。不相等,是之前两个位置其中一个。最长子序列的状态转移。......原创 2022-07-24 09:42:28 · 51 阅读 · 0 评论 -
笔记1 第11课 贪心初步 ——柠檬水找零,分发饼干,跳跃游戏,完成所有任务所需最小能量——极客时间算法
之前收藏了极客时间的算法训练营3期 共21课,计划每一课写博客来记录学习,主要形式为方法类型1题1题解题2题解方法类型2题1题解……题目大体来自leetcode 和 acwing主要记录和理解代码,所以基本完全搬运了视频题解代码,个人学习感受体现在大致思路的总结和注释上。第一题860. 柠檬水找零本题满足贪心的正确性,因为20,10,5这些数都是向下兼容的,所以可以直接使用贪心算法。 第二题455. 分发饼干发刚好够吃的或者相对而言浪费最少的饼干,肯定最合适、 第三题122. 买卖股票的原创 2022-07-12 16:44:51 · 310 阅读 · 0 评论 -
笔记1 第10课 排序算法——数组的相对排序,合并区间,快速选择算法,翻转对计数——极客时间算法
之前收藏了极客时间的算法训练营3期 共21课,计划每一课写博客来记录学习,主要形式为方法类型1题1题解题2题解方法类型2题1题解……题目大体来自leetcode 和 acwing主要记录和理解代码,所以基本完全搬运了视频题解代码,个人学习感受体现在大致思路的总结和注释上。第一题1122. 数组的相对排序本题可以用hash_map来标记rk值,也可以使用计数排序1.hash + 快排 2.计数 第二题56. 合并区间本题使用双指针,其实对于数组的排序只需要排序开始结点即可,也可以使用差分,用前缀和来表原创 2022-07-11 21:14:24 · 237 阅读 · 0 评论 -
笔记1 第9课 二分查找,二分答案——寻找旋转排序数组中的最小值,在排序数组中查找元素第一个和最后一个位置,寻找峰值,分割数组的最大值,制作m束花的最短时间——极客时间算法
之前收藏了极客时间的算法训练营3期 共21课,计划每一课写博客来记录学习,主要形式为方法类型1题1题解题2题解方法类型2题1题解……题目大体来自leetcode 和 acwing主要记录和理解代码,所以基本完全搬运了视频题解代码,个人学习感受体现在大致思路的总结和注释上。一、二分查找第一题153. 寻找旋转排序数组中的最小值本题考虑为所有数和数组末端的数比较,有明确的分界线,小于等于末尾数的第一个即为开头 第二题34. 在排序数组中查找元素的第一个和最后一个位置理论上,可以直接找第一个>=,原创 2022-07-10 20:43:48 · 119 阅读 · 0 评论 -
笔记1 第8课 二叉堆,二叉搜索树——合并K个升序链表,滑动窗口最大值,二叉搜索树的后继者,删除二叉搜索树结点——极客时间算法
之前收藏了极客时间的算法训练营3期 共21课,计划每一课写博客来记录学习,主要形式为方法类型1题1题解题2题解方法类型2题1题解……题目大体来自leetcode 和 acwing主要记录和理解代码,所以基本完全搬运了视频题解代码,个人学习感受体现在大致思路的总结和注释上。一、二叉堆第一题23. 合并K个升序链表使用堆来维护几个有序表的当前元素,当使用最小值构建答案链表过后,将相应的当前元素向后推一个。 第二题239. 滑动窗口最大值本题之前使用了纯队列的操作方式,但逻辑上分析,堆适用于维护最原创 2022-07-09 15:31:16 · 145 阅读 · 0 评论 -
笔记1 第7课 深度优先搜索,广度优先搜索——N皇后,电话号码字母组合,岛屿数量,最小基因变化,矩阵中的最长递增序列——极客时间算法
之前收藏了极客时间的算法训练营3期 共21课,计划每一课写博客来记录学习,主要形式为方法类型1题1题解题2题解方法类型2题1题解……题目大体来自leetcode 和 acwing主要记录和理解代码,所以基本完全搬运了视频题解代码,个人学习感受体现在大致思路的总结和注释上。一、深度优先搜索1.y51. N 皇后找到控制皇后位置的量 2.电话号码的字母组合把字母组合存起来查表,深度优先即可. 二、广度优先搜索1.岛屿数量每个岛屿扩散开去。 2.最小基因变化bfs可以着重使用层数来标记数据原创 2022-06-21 21:51:10 · 159 阅读 · 0 评论 -
笔记1 第6课 树和图基础——n叉树层序遍历, 冗余连接,课程表——极客时间算法
之前收藏了极客时间的算法训练营3期 共21课,计划每一课写博客来记录学习,主要形式为方法类型1题1题解题2题解方法类型2题1题解……题目大体来自leetcode 和 acwing主要记录和理解代码,所以基本完全搬运了视频题解代码,个人学习感受体现在大致思路的总结和注释上。一、树1.N 叉树的层序遍历实质是广度优先搜索BFS 2,从前序与中序遍历序列构造二叉树用下标操纵前后序遍历。 3.二叉树的序列化与反序列化 4二叉树的最近公共祖先 二、图1.树的直径会员题,题意为给一个边集,找出对应无向树原创 2022-06-21 15:30:57 · 144 阅读 · 0 评论 -
笔记1 第5课 递归与分治——子集,组合——极客时间算法
之前收藏了极客时间的算法训练营3期 共21课,计划每一课写博客来记录学习,主要形式为方法类型1题1题解题2题解方法类型2题1题解……题目大体来自leetcode 和 acwing主要记录和理解代码,所以基本完全搬运了视频题解代码,个人学习感受体现在大致思路的总结和注释上。一、递归1.子集 2.组合剪枝的应用,边界判定 3.翻转二叉树基础题 4.验证二叉搜索树单纯的验证左右孩子的值是不行的,要注意左右子树所有结点都要小于父亲结点值。 二、分治1.括号生成分为(A)B,讨论A,B两个子集。范围为原创 2022-06-20 19:09:54 · 71 阅读 · 0 评论 -
笔记1 第4课 前缀和,差分,双指针——统计优美子数组,二维区域面积, 两数之和 ——极客时间算法训练营
之前收藏了极客时间的算法训练营3期 共10周,计划每一课写博客来记录学习,主要形式为方法类型1题1题解题2题解方法类型2题1题解……题目大体来自leetcode 和 acwing主要记录和理解代码,所以基本完全搬运了视频题解代码,个人学习感受体现在大致思路的总结和注释上。一、前缀和1.统计「优美子数组」每一个从后向前,前缀和相减等于k的组合,都是答案、 2.二维区域和检索 - 矩阵不可变求每一个二维区域的面积,再画图减法得到答案。 3.航班预订统计利用差分记录变化量,再求前缀和变为答案。 二。双原创 2022-06-19 19:49:34 · 142 阅读 · 0 评论 -
笔记1 第3课 哈希表——两数之和,模拟行走机器人,字母异位词分组——极客时间算法训练营
之前收藏了极客时间的算法训练营3期 共10周,计划每周内容分3p博客来记录学习,主要形式为方法类型1题1题解题2题解方法类型2题1题解……题目大体来自leetcode 和 acwing主要记录和理解代码,所以基本完全搬运了视频题解代码,个人学习感受体现在大致思路的总结和注释上。一、哈希表1.两数之和 2.模拟行走机器人方向数组障碍的处理中使用了哈希表。由于不能直接用pair哈希,故设计了到int的哈希、 3.字母异位词分组把字母排序,存在hash_map 里面,map第二项存答案数组。注意hash_原创 2022-06-18 23:08:19 · 98 阅读 · 0 评论 -
笔记1 第一周 p3 单调栈,单调队列——柱状图中最大的矩形,接雨水,——极客时间算法训练营
之前收藏了极客时间的算法训练营3期 共10周,计划每周内容分3p博客来记录学习,主要形式为方法类型1题1题解题2题解方法类型2题1题解……题目大体来自leetcode 和 acwing主要记录和理解代码,所以基本完全搬运了视频题解代码,个人学习感受体现在大致思路的总结和注释上。一、单调栈1.柱状图中最大的矩形思路矩形面积为底*高,维护一个单调站,栈顶为矩形左墙壁的高值,当遇到打破单调的数据时,开始出栈,出栈时,用最大的左墙壁那个矩形来更新答案,注意,这个左墙壁会随着一个个元素的入栈越来越厚(相当于出栈的时候原创 2022-06-18 21:08:24 · 587 阅读 · 0 评论 -
笔记1 第一周 p2 栈,队列,表达式求值——有效的括号,最小栈,基本计算器——极客时间算法训练营
之前收藏了极客时间的算法训练营3期 共10周,计划每周内容分3p博客来记录学习,主要形式为 方法类型1 题1 题解 题2 题解 方法类型2 题1 题解 …… 题目大体来自leetcode 和 acwing 主要记录和理解代码,所以基本完全搬运了视频题解代码, 个人学习感受体现在大致思路的总结和注释上。 20. 有效的括号 155. 最小栈 150. 逆波兰表达式求值 227. 基本计算器 II 224. 基本计算器 栈 20. 有效的括号 class Solu原创 2022-05-28 16:48:10 · 130 阅读 · 1 评论 -
笔记1 第一周 p1 数组过滤器,链表操作,反转链表,k个一组翻转链表,邻值查找——极客时间算法训练营
之前收藏了极客时间的算法训练营3期 共10周,计划每周内容分3p博客来记录学习,主要形式为 方法类型1 题1 题解 题2 题解 方法类型2 题1 题解 …… 题目大体来自leetcode 和 acwing 主要记录和理解代码,所以基本完全搬运了视频题解代码,个人学习感受,体现在大致思路的总结和注释上。 数组原理 题1 删除有序数组中的重复项 class Solution { public: int removeDuplicates(vector<int>&a原创 2022-05-27 10:01:00 · 123 阅读 · 1 评论