
数据结构
sdu_dogdog
wandering
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
编程之法-面试和算法心得 - 红黑树
《编程之法-面试和算法心得》 本章导读 1. 红黑树 1.1 二叉查找树 二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树: 若任意结点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若任意结点的右子树不空,则右子树上所有结点的值均大于...原创 2019-04-04 09:49:26 · 197 阅读 · 0 评论 -
编程之法:面试和算法心得 - B树
B树 小结: 问题的提出:树深度过大而造成的磁盘IO读写过于频繁,查找效率低 特点 场景 B树 1. 每个节点最多m个孩子; 2. 中间节点个数范围:[ ceil(m/2)-1, m - 1] 3. 所有叶子节点都在同一层; 4. 中间节点按升序排列 B+树 1. 叶子节点包含全部关键字信息,叶子节点顺序链接; 2. 所有中间节点是索引部分 文件索引、数据库索引 B*...原创 2019-04-04 20:09:28 · 285 阅读 · 0 评论 -
编程之法:面试和算法心得 -最近公共祖先LCA问题
最近公共祖先LCA问题 小结: 暴力 二叉查找树(左右子树递归找) 非二叉查找树 转换为单向链表第一个公共点 递归 缺点:适合一次查询,不适合多次,多次复杂度扩大N倍 Tarjan算法 是一个找强连通分量的算法。dfs+并查集,每次将两个节点对的最近公共祖先的查询保存起来,然后dfs更新一次。 复杂度:O(n + Q), Q为查询个数 RMQ(没看) 但前面暴力求a[i,j]最小值的...原创 2019-04-04 22:04:44 · 305 阅读 · 0 评论 -
编程之法:面试和算法心得 - 查找匹配
第四章 查找匹配 小结: 二分查找:关于right的赋值 right = n - 1 ⇒ while( left <= right) ⇒ right = middle - 1; right = n ⇒ while(left < right) ⇒ right = middle; middle的计算不能写在while循环之外 行列递增矩阵的查找 分治法、定位法 出现次数超过一半 ...原创 2019-04-05 08:51:05 · 210 阅读 · 0 评论 -
编程之法:面试和算法心得 - 动态规划
第五章 动态规划 小结: 不太会动态规划 1.最大连续乘积子串 2. 字符串编辑距离 3. 格子取数问题 4. 交替字符串 5. 最长递增子序列 本章导读 学习一个算法,可分为3个步骤:首先了解算法本身解决什么问题,然后学习它的解决策略,最后了解某些相似算法之间的联系。例如图算法中, 广搜是一层一层往外遍历,寻找最短路径,其策略是采取队列的方法。 最小生成树是最小代价连接所有点,其策略是贪心,...原创 2019-04-05 10:55:22 · 224 阅读 · 0 评论 -
编程之法:面试和算法心得 - 海量数据处理(1)
第六章 海量数据处理 本章导读 针对时间问题,可以采用巧妙的算法搭配合适的数据结构(如布隆过滤器、哈希、位图、堆、数据库、倒排索引、Trie树)来解决;而对于**空间问题,可以采取分而治之(哈希映射)**的方法,也就是说,把规模大的数据转化为规模小的,从而各个击破。 针对常说的单机及集群问题,通俗来讲,单机就是指处理装载数据的机器有限(只要考虑CPU、内存、和硬盘之间的数据交互),而集群的意思是指...原创 2019-04-05 11:36:41 · 194 阅读 · 0 评论 -
编程之法:面试与算法心得 - 海量数据处理(2)
这里介绍海量数据处理中常用的算法 1. simhash算法 背景 如果某一天,面试官问你如何设计一个比较两篇文章相似度的算法?可能你会回答几个比较传统点的思路: 一种方案是先将两篇文章分别进行分词,得到一系列特征向量,然后计算特征向量之间的距离(可以计算它们之间的欧氏距离、海明距离或者夹角余弦等等),从而通过距离的大小来判断两篇文章的相似度。 另外一种方案是传统hash,我们考虑为每一个web文...原创 2019-04-05 16:58:50 · 463 阅读 · 0 评论 -
数据结构 - 字符串
不知道找工作怎么复习,不管面试了,一点一点开始学,首先从数据结构开始 学习内容:编程之法:面试和算法心得 >表小结或个人笔记 表示问题 1. 程序员如何准备面试中的算法 … 一、第一部分 数据结构 1. 第一章 字符串 本章导读: 本章重点介绍6个经典的字符串问题:旋转字符串、字符串包含、字符串转成整数、回文判断、最长回文子串、字符串的全排列,这6个问题要么从暴力解法入手,然后逐步优化,要...原创 2019-04-02 14:45:16 · 404 阅读 · 0 评论 -
编程之法 -面试和算法心得 - 数组
《编程之法:面试和算法心得》 本章导读 面试编程题的常用思路: 暴力穷举(递归、回溯) 如求n个数的全排列或八皇后(N皇后问题) 分治法 空间换时间(如活用哈希表) 合适的数据结构,如寻找最小的k个数中,用堆代替数组 排序 不允许排序,考虑不改变数列顺序的贪心算法(如最小生成树Prim、kruskal和最短路径dijkstra,或动态规划(01背包) 细节处理,不要忽略边界 小结: 1.寻找最...原创 2019-04-03 16:06:55 · 351 阅读 · 0 评论