01 2025 档案

摘要:树是分等级的数据结构,遍历树有两种策略,一是广度优先,一是深度优先。 广度优先 a level 0 | | b c level 1 | | | | d e f g level 2 | | h i level 3 广度优先,我们从level 0开始,每层节点访问完毕,接着往下一层。 a,b,c,d,e 阅读全文
posted @ 2025-01-18 22:09 Eagle6970 阅读(2) 评论(0) 推荐(0) 编辑
摘要:二分查找有一个最关键的前提,查找的集合必须是排好序的!它的思想是分而治之。 给定数组:1,3,5,10,32,40,60,71,80,99 查找:60 1. 找到中间点 分两种情况: 1. 奇数个元素,很容易找到中间点 a, b, c, d, e -> c是中间点 2. 偶数个元素,我们取中间偏左位 阅读全文
posted @ 2025-01-18 22:04 Eagle6970 阅读(4) 评论(0) 推荐(0) 编辑
摘要:查找算法是指从一个集合里比如数组,列表,树里查找我们想要的值。 我们从最简单的线性查找开始。 线性查找,就是遍历集合里的元素,查看是否有和我们想要查找的值相同的,有则查找成功,没有则查找失败。 比如: 5,8,6,9,1,7,3,2,4 我们要找3,那从5开始依次往后,到了第7个(下标6),我们找到 阅读全文
posted @ 2025-01-18 20:41 Eagle6970 阅读(8) 评论(0) 推荐(0) 编辑
摘要:汉诺塔是个古老的游戏,它可以用递归来解决。 关于汉诺塔的玩法和介绍,请参考这里。 算法思想: 1. 目标是把最底下,最大的盘从起始柱子移到终点柱子 2. 那我们要先把除了最大的盘的其他盘子从起始柱子移到临时柱子上 3. 然后把最大的盘子从起始柱子移到终点柱子 4. 把除了最大盘的其他盘子从临时柱子移 阅读全文
posted @ 2025-01-17 23:23 Eagle6970 阅读(45) 评论(0) 推荐(0) 编辑
摘要:Fibonacci 和递归 Fibonacci在递归界有很重要的地位。它能很好的说明递归是怎么方便的解决问题的,也能很好的说明递归也不是万能的,它是有限制的,那么,怎么消除这些限制,我们将用Fibonacci的不同实现理解这些问题。 什么是Fibonacci数列 fibonacci(0) = 0 f 阅读全文
posted @ 2025-01-17 19:55 Eagle6970 阅读(15) 评论(0) 推荐(0) 编辑
摘要:递归让我们把问题由大分小,小到我们能够轻松处理。递归方法有两个要注意的点:1. 递归方法会重复的被调用;2. 必须有一个终止条件,否则方法调用不停,会导致stack overflow。 看下面的一个例子,这个没有终止条件,会报错! function hello() { console.log("I' 阅读全文
posted @ 2025-01-15 13:39 Eagle6970 阅读(6) 评论(0) 推荐(0) 编辑
摘要:图(太难了 。。。) 图是组织信息的一种方式,它可以表示信息之间是怎么样互相联系的。它可以帮助我们发现和分析事物间的关系。 看一个例子,下面这就是一个图:它有节点,和边,下面这个例子的边它没有方向,所以也叫无向图。 Elaine Kramer (node) \ / (edge) Jerry | Ge 阅读全文
posted @ 2025-01-15 09:44 Eagle6970 阅读(4) 评论(0) 推荐(0) 编辑
摘要:前序树(Trie/Prefix tree),它的一个典型的应用场景在搜索引擎里,当你输入查询关键字的时候,会联想自动补齐你想要输入的内容。比如,你输入app,下面可能会出来联想Apple, Applied等等。 什么是Trie? Trie(读作Try)是这样一个数据结构,它把短语或者单词分解字母,然 阅读全文
posted @ 2025-01-11 10:11 Eagle6970 阅读(14) 评论(0) 推荐(0) 编辑
摘要:哈希表也叫Hashmap或者Dictionary,它存储和检索都非常快,所以常用于缓存数据供后续快速访问。 哈希函数,是这样的一个函数,你提供一个input,它会返回一个唯一的值(hash code)。只要你的input是相同的,这个哈希函数会返回同样的output。 从哈希函数到哈希表 哈希表底层 阅读全文
posted @ 2025-01-09 20:08 Eagle6970 阅读(40) 评论(0) 推荐(0) 编辑
摘要:在日常生活中,我们常常有很多想法要去实现,但是时间有限,所以要把想法分优先级,哪个是最重要的,先做它。堆(heaps)是这样一个数据结构,它让你容易(O(1))的获取最高优先级的想法,并且提供了快速(O(log n))插入,移除想法操作。 堆分为最大堆和最小堆,最大堆就是说root是最大值,最小堆是 阅读全文
posted @ 2025-01-08 22:53 Eagle6970 阅读(9) 评论(0) 推荐(0) 编辑
摘要:二叉查找树,它是一类特殊的二叉树,除了基本的二叉树规则外,还要满足: 1. 左边的子节点要小于父节点值 2. 右边的子节点要大于父节点值 图示: 添加节点: 42 | | 24 99 | | | 15 50 120 | 64 移除节点: 1. 如果移除的是叶子节点,那直接移除 2. 如果移除的是一个 阅读全文
posted @ 2025-01-07 20:21 Eagle6970 阅读(2) 评论(0) 推荐(0) 编辑
摘要:二叉树是一种特殊的树,他满足: 1. 每个节点只能有0,1,2个孩子节点 2. 只能有一个根节点 3. 从根节点到任意节点,只能有一条路径 二叉树的变种: 1. 完满二叉树(Full Binary Tree):每个非叶子节点必须有两个孩子节点 2. 完全二叉树(Complete Binary Tre 阅读全文
posted @ 2025-01-06 19:33 Eagle6970 阅读(7) 评论(0) 推荐(0) 编辑
摘要:为什么要有树结构,我们日常生活中,有很多层级关系,比如家庭树,组织架构图等等。这些或许也能够用数组或者链表来表示,但是这个比喻很好,就好像我们用叉子和盘子也能喝汤,但总是不对劲儿,我们可以有更好的表示方式。 了解树的一些术语 树是由一系列节点(node)和边(edge)相互关联构成的。 孩子节点(c 阅读全文
posted @ 2025-01-06 17:21 Eagle6970 阅读(10) 评论(0) 推荐(0) 编辑
摘要:队列和堆栈类似,但是它是一种先进先出的结构。FIFO (first in first out)。 代码实现,javascript class Queue { constructor() { this.items = new LinkedList(); } clear() { this.items = 阅读全文
posted @ 2025-01-05 21:31 Eagle6970 阅读(1) 评论(0) 推荐(0) 编辑
摘要:堆栈,我们总是把新的数据加在堆栈的最顶端,移除的时候也是从最顶端开始移除。也叫LIFO(last in first out)。 Push: 1 Stack: 1 Push: 2 Stack: 2, 1 Push: 3 Stack: 3, 2, 1 Pop() Stack: 2, 1 Pop() St 阅读全文
posted @ 2025-01-05 16:26 Eagle6970 阅读(6) 评论(0) 推荐(0) 编辑
摘要:链表(Linked Lists) 和数组类似,链表也是用来存放一组数据。和数组不一样的是,链表存储不需要连续的内存位置,一个链表由很多节点组成,节点与节点间通过一个next 指针关联。 图示: Node Value / Data Next 链表操作: 查找一个值: 通过链表的next 指针一直往下跳 阅读全文
posted @ 2025-01-05 10:38 Eagle6970 阅读(3) 评论(0) 推荐(0) 编辑
摘要:数组是用于存放一组数据,把这组数据存放在连续的空间里。通常有插入,删除,查找,访问等操作。 举例: 购物清单,初始状态: 清单:牛奶 -> 鸡蛋 -> 奶油 -> 火腿 -> 果汁 下标:0 1 2 3 4 插入: 1. 插在末尾 清单:牛奶 -> 鸡蛋 -> 奶油 -> 火腿 -> 果汁 -> 西 阅读全文
posted @ 2025-01-03 12:37 Eagle6970 阅读(2) 评论(0) 推荐(0) 编辑
摘要:程序运行都是需要时间的,我们用大O法来表示,程序在最坏情况下,运行时间和输入规模的关系。 一般有这么几种大O时间: 快: 闪电:O(1) - 常量复杂度 - 和输入无关;比如通过数组下标访问元素;简单数学运算,如看末尾数字是否是基数; 火箭:O(log n) - 对数复杂度 - 时间增长随数字规模增 阅读全文
posted @ 2025-01-02 19:48 Eagle6970 阅读(9) 评论(0) 推荐(0) 编辑
摘要:程序本质上就是用来读取数据,然后操作数据,最后生成数据的。如果数据能被有效,或者有结构的展现,那将极大方便程序操作。 举例: 我们家里有很多工具,剪刀,锤子,斧头,扳手,放大镜,六角扳手,螺丝刀,尺子,卷尺,螺丝,便利贴等等。我们可以怎样收纳这些工具,使得我们后续可以方便的使用呢? 第一种,我们家有 阅读全文
posted @ 2025-01-02 19:10 Eagle6970 阅读(1) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示