Fork me on GitHub

随笔分类 -  数据结构与算法

记录刷leetcode
摘要:动态规划基础 某一问题有很多重叠子问题,使用动态规划是最有效的。动态规划中每一个状态是从上一个状态推导出来的。与贪心不同,贪心没有状态推导,从局部中直接选取最优解。 动态规划五部曲: 确定dp数组以及下标的含义 确定递推公式 dp数组的初始化 确定遍历顺序 举例推导dp数组 example: lee 阅读全文
posted @ 2024-05-14 22:03 bupaanything 阅读(49) 评论(0) 推荐(0)
摘要:A.设计一种虚拟机解释器,解析并执行以下虚拟指令。 输入:若干行,每行一条指令 输出:对输入的每行指令,若为PRINT指令,则输出打印一行,该行中包括一个整数,表示寄存器的值 #include <bits/stdc++.h> using namespace std; vector<int> dst( 阅读全文
posted @ 2024-05-13 20:55 bupaanything 阅读(110) 评论(0) 推荐(0)
摘要:重新安排行程 leetcode 332 本题题意为:给定一个n个点m条边的图,从指定的顶点出发,经过所有的边恰好一次,使得路径的字典序最小。 如何处理死循环:及时删除目的机场,利用回溯的终止条件,找到一个合理的行程即可。 含字典序的映射关系:一个机场映射多个机场,且机场之间依靠字典序排序,利用 un 阅读全文
posted @ 2024-05-03 11:57 bupaanything 阅读(31) 评论(0) 推荐(0)
摘要:切割与子集 切割 切割问题类似于组合问题,区别在于组合是从给定集合选取单个元素用以组合,而切割问题则是决定给定集合中连续元素块并加以组合。例如对于字符串abcdef 组合问题:选取a之后,在bcdef中选取第二个字符,选取 b之后在cdef中选取第三个字符....... 切割问题:切割a之后,在bc 阅读全文
posted @ 2024-04-16 16:44 bupaanything 阅读(18) 评论(0) 推荐(0)
摘要:二叉树-层序遍历 之前所述二叉树的递归遍历或者迭代遍历都属于深度优先搜索,即先迭代或者递归到树的某一枝最深处再逐渐回退,再到另一支的最深处再逐渐回退,从而完成遍历。而层序遍历属于广度优先遍历,即一层一层去遍历。 需要借助队列辅助实现一层一层遍历的逻辑,因为其先进先出的逻辑。而栈先进后出的逻辑适合模拟 阅读全文
posted @ 2024-04-15 09:23 bupaanything 阅读(59) 评论(0) 推荐(0)
摘要:回溯-组合 回溯法的本质是穷举,其主要是为了解决n个for循环的问题,在for循环中套着递归从而不断实现for循环。回溯法解决的问题都可以抽象为树形结构,一般是在给定集合是取出符合一定规则的数据。集合的大小构成树的宽度,也即第一层的for循环遍历的范围,递归的深度构成树的深度,也就暴力for循环实现 阅读全文
posted @ 2024-04-11 20:32 bupaanything 阅读(42) 评论(0) 推荐(0)
摘要:迭代法实现的前中后序遍历,除了前序和后序相互关联,中序则是另一种风格。我们需要针对三种遍历方式实现统一风格的代码。如何统一风格:解决访问节点(遍历节点)和处理节点(将元素放进结果集)不一致的情况。将访问的节点放入栈中,把要处理的节点放入栈中但是做标记(紧接着放入一个空指针)。 统一迭代-中序遍历 c 阅读全文
posted @ 2024-04-07 11:57 bupaanything 阅读(84) 评论(0) 推荐(0)
摘要:递归的实现是每次递归调用都把函数的局部变量、参数值和返回地址等压入调用栈中,然后递归返回的时候就从栈顶弹出上一次递归的各项参数。可利用栈实现二叉树的前中后序遍历。 前序遍历 前序遍历是中左右的顺序,整体过程就是逐次访问父节点,压入右孩子再压入左孩子,由于访问的节点和待处理的节点顺序一致,故每次访问栈 阅读全文
posted @ 2024-04-07 10:57 bupaanything 阅读(29) 评论(0) 推荐(0)
摘要:深度优先遍历 先往深走,遇到叶子结点再往回走,分为前序遍历,中序遍历和后序遍历。方法有递归法和迭代法。前中后序遍历,指的是中间节点的遍历顺序。 前序遍历:5 4 1 2 6 7 8 中左右 中序遍历:1 4 2 5 7 6 8 左中右 后序遍历:1 2 4 7 8 6 5 左右中 深度优先遍历可利用 阅读全文
posted @ 2024-04-06 16:58 bupaanything 阅读(18) 评论(0) 推荐(0)
摘要:​ 应用于字符串匹配,主要思想就是当出现字符串不匹配时,可以知道一部分之前已经匹配的文本内容,利用这些信息避免从头再做匹配。 如何利用已经匹配的文本内容?前缀表 前缀表:用来回退,记录模式串与主串(文本串)不匹配的时候,模式串应该从哪里开始重新匹配。记录下标i之前(包括i)的字符串中,有多大长度的相 阅读全文
posted @ 2024-03-27 21:46 bupaanything 阅读(30) 评论(0) 推荐(0)

1