随笔分类 - DataStructure
深度DFS 和 广度BFS搜索算法学习
摘要:目录广度优先的动态图深度优先的动态图广度和深度的具体步骤深度和广度的应用场景 图的两种遍历方式: 深度优先遍历(DFS——Depth First Search) 广度优先遍历(BFS——Breath First Search) 图的遍历算法里,处理临时数据,依赖两个抽象数据结构: 栈 队列 广度优先
阅读全文
二叉查找树(BST)
摘要:目录Why need Binary Tree?树也是节点结构规定术语树的创建树的查找查找的效率树的删除适合场景树的遍历 Why need Binary Tree? 有时候,我们希望数据按照特定顺序排列。 比如: 想要按字母顺序排列人名; 按价格顺序排列产品; ... 树也是节点结构 规定 二叉树的每
阅读全文
擅长处理临时数据的结构——栈
摘要:目录实践1 —— 从字符串中移除星号 栈和数组存储数据的方式一样,它们都只是元素的列表。不同之处在于栈的以下3个限制: 数据只能从栈末插入; 数据只能从栈末删除; 只能读取栈的最后一个元素。 栈和队列、链表...一样,都是抽象的数据结构, 何为抽象数据结构? 它指一种数据组织的形式,它不关注具体的实
阅读全文
Hash表实践 —— 两数之和
摘要:目录题目背景解题思路 题目背景 这个题目用常规的双循环就可以完成。 但不是最优解。为什么? 看看他的步骤数: N =[3,2,4] 求结果为6的两个元素坐标如下, 1). 3+2 = 5 不等于 2). 3+4 = 7 不等于 3). 2+4 = 6 等于,获取坐标[1,2] 求N的步骤数规律: 2
阅读全文
递归的实践 —— 如何拆分子问题
摘要:目录需求背景 需求背景 给你一个数组,把这个数组里面每个元素之间都求差(结果忽略负符号),然后把这些差求和。 给你数组 n = [1,3,5] 正常演示步骤: [1,3,5] 1-3 = 2 1-5 = 4 - 3-5 = 2 sum = 8 反过来思考子问题是什么: 假设已经有一个x函数帮忙搞定了
阅读全文
汉诺塔和递归
摘要:目录需求背景、限制条件、化简模拟盘子的移动步骤递归实现Code分析练习 1 需求背景、限制条件、化简 汉诺塔就是一个由柱子和盘子组成的玩具,它有一些玩法上的限制,主要是规定了盘子移动有限制。 想理解到递归本质,汉诺塔是个不错的载体。 怎么体会? 在盘子移动的过程中。 # 盘子的数量: # 通常,我们
阅读全文
以Top-Down思维去解决问题——递归
摘要:目录递归的基础递归的底层实现(不是重点)递归的应用场景编程中 两种解决问题的思维自下而上(Bottom-Up)自上而下(Top-Down)自上而下的思考过程——求和案例台阶问题 案例易位构词生成 案例 递归和for循环(迭代法)很像,都是通过循环去完成一件事。 但采用Top-Down思维去设计的递归
阅读全文
提速的Hash表
摘要:目录Hash表的别名The working principle插入操作查找操作解决键冲突问题Hash的应用场景 Hash表(也叫Hash函数)是一种的数据结构。它是加速算法里最常见的工具。在一些场景下,用这个数据结构可以提速。 如果说 O (log N )已经很不错了,但你学习 哈希表 这种结构后,
阅读全文
擅长处理临时数据的结构——队列
摘要:目录对列结构队列中间件消息队列能解决什么消息处理的触发机制异步消息队列的概念常见的异步消息队列框架 队列和栈一样,都很适合处理临时数据。 对列结构 和栈一样,队列也是有3条限制(与栈的限制不同)的数组: 数据只能插入队列 末尾(与栈一样); 只能从队列 前端 删除数据(与栈相反); 只能读取队列 前
阅读全文
Array 和 Set 数据结构的工作原理
摘要:目录Array work principle分析Array操作步骤数readfindinsertdeleteSet work principle分析Set操作步骤数readfindinsertdeleteJava Collection Class 从单词来看, Array 很好理解一批一批的意思;
阅读全文
图结构 Graph primary
摘要:目录图的应用场景图的概念和分类图的操作存储邻接矩阵演示:邻接表演示:查询 图结构 (英文:Graph Structure) 图的定义: 在数据的逻辑结构中,如果结构中的某一个节点的前驱和后继的个数不加限制,则称这种数据结构为图结构(图形结构、Graph)。 图形结构是一种比树形结构更复杂的非线性结构
阅读全文
Trie Tree
摘要:[TOC] 你在搜索引擎搜索的时候,自动给你补全的关键字就是Trie tree 字典树(也叫单词查找树)。 字典树可以实现自动补全或者自动纠错 等 功能。 适合自动补全等文字功能场景。 图: 实践1——找最长字母串 以下这个题,是不是可以使用字典结构处理?
阅读全文
DataStructure Preview
摘要:目录Why is it important?线性表数组HashMap链表队列堆栈非线性表树图 如果说在软件应用层的数据库类型有:SQL、MongoDB、Excel ... 那么在编程语言层的数据库就应该是各种数据结构(一个类比),只不过这些数据结构不会把数据存储到硬盘,只存储在内存而已。 计算机的各
阅读全文
Map的特性(有序和无序)讨论
摘要:目录什么是红黑树? 在 Java 中,基础java.util.Map 接口本身并不保证元素的顺序。具体的实现类 HashMap 和 TreeMap 的行为(无序、有序)有所不同: HashMap 类使用哈希表实现,不保证元素的顺序,即遍历 HashMap 的键值对时,不能保证按照任何特定的顺序,其迭
阅读全文
Introduce Binary Tree
摘要:目录Whay need Binary TreeCharacterRequirement Scenarios Whay need Binary Tree 已经有数组、链表了,为什么还需要二叉树? 什么数据结构能在保证顺序的同时,又能快速完成查找、插入和删除呢? 有序数组和哈希表都做不到这一点。 这时就
阅读全文
图的操作
摘要:目录区分图和树图的术语图的实现有向图面向对象的方式表示图矩阵表示图图的搜索 区分图和树 区分图和树重要参考条件就是 环 。 可以把树看作是图,但是图不能是树,为什么? 什么是环? 在图论中,环(Cycle)是区分图和树的一个重要参考条件。 所谓"环"(Cycle),是指: 在一个无向图中,从某个节点
阅读全文
图论之最短距离 Dijkstra(迪杰斯特拉算法)入门
摘要:目录初级求解Dijkstra算法入门code 一个码农在工位上写代码累了,趴着睡着了。 再次睁开眼睛,发现身边好几个妖艳宫女正在给你按摩敲背,住的屋子墙壁和天花板都镶嵌着金箔和银片,大殿的柱子是金丝楠木,雕龙刻凤,地毯是波斯纯手工制作,踩上去柔软而温暖。 突然一个老太监急急忙忙的跑到我跟前说: “大
阅读全文
Hash 表和散列函数思想理解
摘要:目录What is Hash?散列函数Hash表的操作都是O(1) ?什么是散列函数思想? What is Hash? Hash 既可以指数据结构中的哈希表(hash table),也可以指常见的加密散列算法(hash algorithm)。 Hash表,Hash算法,虽然都叫Hash, 但是 哈希
阅读全文
检验算法程序的好坏标准 及优化程序 —— 大O
摘要:目录什么是算法程序?算法 (Algorithm):程序 (Program):怎么检验算法程序的好坏?大O表示法O(1) - 常数时间O(log n) - 对数时间1. 什么是 ( log N )2. 为什么 ( log N ) 比 ( N ) 高效 ?3. 应用场景4. 计算 ( log N ) 的
阅读全文