08 2021 档案
摘要:2. 先画出图,再写代码3. 写先简单的dfs,再剪枝。 虽然不是最秀的,但至少能让你看得懂! - 括号生成 - 力扣(LeetCode) backtracking = DFS + 回溯 + 剪枝 把方法命名为dfs比较好理解。dfs一直到有用解或者不可解。有用解,返回true(也可回溯); 不可解
阅读全文
摘要:双指针: 不同的状态,导致不同指针的移动。最终的状态由于两个指针的位置决定。 经典题目: 1. 盛最多水的容器 问题抽象,容量: min(l, r) * t。 容量取决于最小的一块木板,并且和木板之间的距离有关。 另双指针在容器的各自最远端。双指针开始向内移动,最大的容量必定在向内移动的过程中产生。
阅读全文
摘要:经典题目: 1. 最长回文子串 回文的特点是镜像,以中间字符为中心,向外扩张应该是镜像的。 因此,每个字符最多扩展2N次(奇数回文,偶数回文),时间复杂度O(N) 2. 最小路径和 动态规划:状态;状态转移方程 已知基础解。 3. 不同路径 动态规划 4. 不同的二叉搜索树 已知n的结果依赖于前面的
阅读全文
摘要:滑动窗口模式: 识别子串,子串中存在着重复的模式。 因为有重复的模式,所以窗口可以固定地向一个方向滑动,而不需要重新从头开始。 经典题目: 1. 无重复字符的最长子串 模式:如果某一个子串无重复字符,则窗口可以向前滑动一步进行判断,因为新的窗口-1内的字符必定不会重复。 即无重复字符的子串的子串,必
阅读全文
摘要:数据结构 struct { int value; Node* left; Node* right; } Node; 经典题目 1. 中序遍历 解法:递归 visit(root->left, result); result.push(root); visit(root->right, result);
阅读全文
摘要:贪心算法,在每一步都求最优解,不理会以前的状态。 和动态规划的区别为,动态规划可以回溯,即理会以前的状态。 用下面的图可以理解(来自wiki pedia): A会一步一步到达m,而不是M。 算法: while 可以走向下一步;do 找到这一步的最优解 done 经典题目 1. 最大子序和 求max(
阅读全文
摘要:链表 特点:节点之间可以相互连接。 每个节点的数据结构为:值,下一个节点。 经典题目 1. 合并两个有序链表 解法:迭代(也可以递归),构建一个哨兵节点prehead,维护l1和l2的指针,和结果链表的prev指针。 比较l1和l2的值,取出最小的节点(l1或者l2的指针后移),放入prehead后
阅读全文
摘要:First In First Out 通常可以用来保存状态。 操作:入栈,出栈,获取顶部元素 典型题目: 1. 有效的括号 如果栈里没有匹配的括号,则将此括号入栈; 如果栈里有匹配的括号,则将匹配的括号出栈。 匹配的过程用查表法(哈希)。 2. 最小栈-单调栈 最小栈一般用来求:下个更大的元素在哪里
阅读全文
摘要:查找表法 经典题目: 1.两数之和。 需要求得两数之和为X的数组a的索引i, j。 抽象来说,这是一个查找的过程。在索引i处,查找X - a[i]的索引j。 方法: 构建一个哈希表,key是数组的值,value是数组的索引。 接着遍历数组,然后在哈希表中找X - a[i]。找到,就返回i, j。 时
阅读全文
摘要:1. 全局公共子表达式 global common subexpression 2. 复制传播 3. 死代码消除 4. 代码移动 5. 归纳变量和强度消减
阅读全文
摘要:窥孔优化 peephole optimiation 窥孔优化和局部优化类似,只不过窥孔优化的目标是已经生成的原始代码,即它对目标代码进行优化转换(transform)。 1. 冗余指令消除 2. 控制流优化 3. 代数化简 reduction in strength 4. 机器特有指令的使用 如 x
阅读全文
摘要:局部优化:一个基本块(Basic Block)内的优化 1. CSE common subexpression elimination 当一个新节点M被加入DAG时,检查是否存在N,和M具有相同的运算符和子节点。如果存在,则可以用N替换M。 a = b + c和d = b + c 直接使用a = b
阅读全文
摘要:残差网络为什么叫残差? 由以下公式决定: R(x) = Output - Input = H(x) - x 倒数H'(x) = R'(x) + 1,这样梯度就不会因为链式法则而逐渐消失了。 Residual Network和LSTM的关系? LSTM也可以部分解决梯度消失的问题。
阅读全文
摘要:原文章。 https://www.sigarch.org/the-future-of-sparsity-in-deep-neural-networks/ 从三方面分析 1. Sparse Algorithms 第一层面是算法。 算法可以直接减少需要的workload。 2. Sparse Kerne
阅读全文
摘要:因为根据链式法则,最靠近input的参数更新值为后面每一层梯度相乘,这样参数0~1的累乘会造成梯度消失,接近于0。 梯度爆炸一般是不稳定的模型或者计算造成,如某一层梯度过大。
阅读全文
摘要:attention机制将整个句子作为输入,从中抽取有用的信息。 每个输出都跟整个句子优化,输出的值为输入的句子的词向量的一个加权求和值。 “This is what attention does, it extracts information from the whole sequence, a
阅读全文