随笔分类 - Brain-Algo
Dementia Prevention.
摘要:链表问答 资源 Ref: [算法总结] 一文搞懂面试链表题 Quiz 一、第一波攻击 在 O(1) 时间删除链表节点 - 单向链表 做一次复制即可。 如果我们把下一个节点的内容复制到要删除的节点上覆盖原有的内容,再把下一个节点删除,那就相当于把当前要删除的节点删除了。 反转链表 O(n) 用三个临时
阅读全文
摘要:Ref: [Optimization] Dynamic programming【寻找子问题】 Ref: [Optimization] Advanced Dynamic programming【优于recursion】 显然,本篇是关于”动态规划"的部分。 找零钱 一、简单直白策略 要点:”个数“其实
阅读全文
摘要:分形思想和递归思想有区别么? 一、简单例子 函数调用自己,简化了理解逻辑,但其他到处都是问题。 二、分形的思想 中文版本Tutorial: turtle 海龟绘图 无限分叉树 输出: 谢尔宾斯基三角形 输出: 三、汉诺塔游戏 核心思想 要把fromPole最下面的"盘子“转移到toPole,就先要解
阅读全文
摘要:一、这是个基础问题 Ref: Python之队列模拟算法(打印机问题)【首先研究这个问题作为开始】 任务队列 定义一个任务队列,来管理任务,而无需关心队列的”任务类型"。 遍历循环队列 index不变,elem变化 queue.enqueue(queue.dequeue) index变化,elem不
阅读全文
摘要:如何利用栈解决问题。 Ref: 如何在程序中将中缀表达式转换为后缀表达式? 本文的引申:如何手写语法分析器 实现调度场算法 “9+(3-1)*3+10/2” --> “9 3 1-3*+ 10 2/+” 规则: 从左到右遍历中缀表达式的每个数字和符号, 若是数字就输出,即成为后缀表达式的一部分; 若
阅读全文
摘要:STL: map, set 内存模型 Ref: STL中map的数据结构 C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。 RB树的统计性能要好于一般的平衡二叉树(有
阅读全文
摘要:vector “可增的”数组 vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似。 不同的地方就是: (1) 数组是静态分配空间,一旦分配了空间的大小,就不可再改变了; (2) vector是动态分配空间,随着元素的不断插入,它会按照自身的一套机制不断扩充自身的容量。 内存模型
阅读全文
摘要:Hashing Process 关于hash本身,解决冲突是一个小重点,如下图。 代码实现分析 —— 定义HashTable类 一、数据结构 二、Hashing策略 注意,因“冲突”而导致的rehash不是原本的"key+1",而是"key的hash结果+1"。用的是”线性解决冲突“的策略。 三、设
阅读全文
摘要:这里只是简单的了解,具体内容详见推荐的原链接 注意堆和树的区别 堆就是优先级队列的实现形式 堆排序 排序过程 Ref: 排序算法之堆排序(Heapsort)解析 第一步(构造初始堆): {7, 5, 6, 1, 3, 2, 4}已经满足了大根堆,第一步完成 第二步(首尾交换,断尾重构): 第三步(重
阅读全文
摘要:Link: Computer Algorithms: Rabin-Karp String Searching 为了避免挨个字符对文本和模式串进行比较,我们可以尝试一次性判断两者是否相等。 因此,我们需要一个好的哈希函数(hash function)。通过哈希函数,我们可以算出模式串的哈希值,然后将它
阅读全文
摘要:Ref MIT: lecture-13-incremental-improvement-max-flow-min-cut/ Ford Fulkerson algorithm for finding maximal flow in a flow network: Keep adding flow th
阅读全文
摘要:这里主要是较为详细地理解动态规划的思想,思考一些高质量的案例,同时也响应如下这么一句口号: “迭代(regression)是人,递归(recursion)是神,动态规划是what?” Video series for Dynamic Programming Planning a company pa
阅读全文
摘要:“就是迭代,被众人说得这么玄乎" “之所以归为优化,是因为动态规划本质是一个systemetic bruce force" “因为systemetic,所以比穷举好了许多,就认为是优化的功绩咯" 一个热身问题 不等长活动的安排 活动不等长,安排利用率最高的活动安排。 不同于“贪心算法”的例子,这里希
阅读全文
摘要:“贪心算法” 算是 "动态规划" 的前置课程。 在数据结构graph中的优化问题也大量涉及到了”Greedy Method"。 也有五大常用算法之说:算法设计之五大常用算法设计方法总结 一、【分治法】 二、【动态规划法】 三、【贪心算法】 四、【回溯法】 五、【分支限界法】 贪心地关注边界 Give
阅读全文
摘要:排序:nlogn 二分查找:logn <-- 利用单调性,查n次,每次logn Multiply the following pairs of polynomials using at most the prescribed numberof multiplications of large num
阅读全文
摘要:f(n) 的形式 vs 判定形势 但,此题型过于简单,一般不出现在考题中。 Extended: link Let's set n = 2^m, so m = log(n) T(n) = 2*T(n^(1/2)) + 1 => T(2^m) = 2*T(2^(m/2)) + 1 => S(M) = 2
阅读全文
摘要:教学大纲 一、高教版《数据结构》 图的概念有点多,在此只讨论最基础的内容,所以选择比较薄的高教版《数据结构》。 1.4 非线性数据结构--图 1.4.1 图的基本概念 1.4.2 图形结构的物理存储方式 1.4.2.1 相邻矩阵 1.4.2.2 图的邻接表示 1.4.2.3 图的多重邻接表示 1.4
阅读全文
摘要:约会配对问题 一.立即接受算法: 对于约会的配对,大家都去追自己最心仪的女生。而这个女生面对几位追求者,要立刻做个决定。 被拒绝的男生们调整一下心情,再去追求心中的 No. 2。以此类推。 这样做法有一个严重的问题:当你被你的No.1拒绝后,再去追求你的No.2的时候,你心中的No.2可能已经在第一
阅读全文
摘要:本篇补充了Python版本的实现 Sep 2019. 顺序查找 如果是 ”随机放置“,则使用。 二分检索 代码可写成:递归,也可以是非递归。 渴望对手 From: http://blog.jobbole.com/73517/ 二分检索是查找有序数组最简单然而最有效的算法之一。现在的问题是,更复杂的算
阅读全文