随笔分类 - 3_算法和数据结构
摘要:B树、B-树、B+树、B*树之间的关系 一、总结 一句话总结: 二叉搜索树:二叉树,每个结点只存储一个关键字,等于则命中,小于走左结点,大于走右结点; B(B-)树:多路搜索树,每个结点存储M/2到M个关键字,非叶子结点存储指向关键字范围的子结点;所有关键字在整颗树中出现,且只出现一次,非叶子结点可
阅读全文
摘要:算法与数据结构 1、课程介绍 一、总结 一句话总结: 算法学习的过程中,要深刻理解算法的思路,也要可以很轻松的将算法思路实现为代码。要多练多刷题。 二、知识结构 博客对应课程的视频位置:1、课程介绍https://www.fanrenyi.com/video/27/248 1)、算法 1、枚举2、递
阅读全文
摘要:算法疑难(js实现) 11、字典树 一、总结 一句话总结: 本题字典树的的操作就是1、把单词插入到字典树里面去和2、在字典树中查找单词,都是递归,分析好思路,代码很好敲 function TrieNode(val){ this.val=val; this.children=[]; this.coun
阅读全文
摘要:Trie|如何用字典树实现搜索引擎的关键词提示功能 一、总结 一句话总结: 字典树的常见操作就是 a、插入单词构建树 和 b、在字典树中查找单词。 具体代码按照思路写起来也的确非常简单。 1、字典树的常见应用? a、搜索引擎输入框关键词提示 b、自动补全功能,如:IDE编译器自动补全,输入法自动补全
阅读全文
摘要:树的创建 一、总结 一句话总结: a、树的创建可以拿层次遍历序列(用队列)来创建,也可以先序序列(用递归)来创建 b、树的遍历就是递归,先序(根左右)、中序(左根右)、后序(左右根) 二、树的创建 转自或参考:树的创建https://www.cnblogs.com/cxxxxxx/p/1078044
阅读全文
摘要:算法疑难(js实现) 10、二叉树的广度优先遍历 一、总结 一句话总结: 广度优先遍历就用队列来做,用队列的算法模板,弄清楚算法步骤,敲起来也比较简单 算法: 队列 队列解决问题的算法模板 while(队列不为空){ 1、将队列队首的元素出队(树的根节点或者子树的根节点) 2、把和出队元素相关的元素
阅读全文
摘要:算法疑难(js实现) 9、二叉树的深度优先遍历 一、总结 一句话总结: 1、先序遍历:(根左右) 2、中序遍历:(左根右) 3、后序遍历:(左右根) 1 1、 2 先序遍历:(根左右) 3 a、访问根节点(得到节点的值) 4 b、递归的访问左子树 5 c、递归的访问右子树 6 7 2、 8 中序遍历
阅读全文
摘要:算法疑难(js实现) 8、二叉树的创建(先序遍历) 一、总结 一句话总结: 先序遍历结果创建二叉树,只需要把先序遍历算法步骤中的访问改成创建 就是 根据先序遍历结果创建二叉树的算法,具体先创建根节点,再递归的创建左子树,再递归的创建右子树 2、算法步骤(根据一个树的先序遍历的结果,创建二叉树) (1
阅读全文
摘要:算法疑难(js实现) 6、反转链表 一、总结 一句话总结: 1、遍历链表,把链表里面的每个节点的值都拿下来,存在数组里面 2、再次遍历链表,将数组里面的值倒序的赋值给每一个节点的val域就实现了链表的反转 //反转链表 function reverseList(head){ //1、遍历链表,把链表
阅读全文
摘要:算法疑难(js实现) 5、变态跳台阶 一、总结 一句话总结: 变态跳台阶的递推表达式咋一眼看不是很好写出,我们可以多枚举几个例子,通过例子找规律,从而总结出f(n) let cache=[,1,2]; function jumpFloor(n) { if(cache[n]!==undefined)
阅读全文
摘要:算法疑难(js实现) 4、跳台阶(记忆化递归) 一、总结 一句话总结: 跳台阶的问题就是一个非常标准的递归类型的问题,找到递推表达式,写递归就非常简单了,由于递归会多次重复的求中间状态的结果,造成计算的浪费,所以我们可以把中间状态的结果保存下来,也就是用记忆化递归来做 //1、递归写法 functi
阅读全文
摘要:算法疑难(js实现) 3、两个栈来实现一个队列 一、总结 一句话总结: 栈1做入队操作,栈2做出队操作 let stack1=[];//入队操作 let stack2=[];//出队操作 //队列的入队操作 function push(node){ //只需要非常简单的往栈1里面push元素就好 s
阅读全文
摘要:算法疑难(js实现) 2、重建二叉树 一、总结 一句话总结: 1、找到根节点(前序序列的第一个元素一定是根节点) 2、根据找到的根节点和中序序列,找到树的左子树和右子树 3、让左子树和右子树进行1、2步的递归操作,来构建左子树和右子树 function rebuildTree(qianXu,zhon
阅读全文
摘要:js刷题爬坑 1、day 1 一、总结 一句话总结: 算法要掌握的语法基础可以非常少 1、js数组的遍历注意点? 1、下标从0开始 2、多维数组就是按下标拿到的子元素 3、不连续数组也可以用for...in循环 2、空格符替换:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串
阅读全文
摘要:动态规划和回溯总结 一、总结 一句话总结: 算法的录课可以以大知识点为一门课程,比如dp,比如回溯,比如线段树,比如最短路等等 1、动态规划技巧总结? 1、找准状态:一般问题所问我们就可以设置为状态 2、找变化(转移)关系:也就是找递推表达式:也就是找动态规划的状态转移方程 3、找好起始状态和最终状
阅读全文
摘要:图论相关算法 一、总结 一句话总结: 算法或者算法的思想在敲代码方面特别有用,不要荒废了,编程相关的方面全部都要用 1、最小生成树 prim算法? 找离集合最近的点,用一个数组来维护离集合最近的点即可 2、最小生成树 Kruskal算法? 依次找最小的边,条件是 找的那条边的两个点不能连通,这里看两
阅读全文
摘要:浅谈线段树 一、总结 一句话总结: 1、线段树解决的问题是什么问题? 2、线段树如何存储数据? 3、线段树的基本思想? 4、线段树的修改? 二、浅谈线段树(转) 转自:浅谈线段树https://www.cnblogs.com/TheRoadToTheGold/p/6254255.html 数据结构—
阅读全文
摘要:并查集最简单讲解 一、总结 一句话总结: 1、并查集解决什么问题? 2、并查集的优化? 3、并查集的数据存储方式? 二、数据结构4——并查集(入门)(转) 转自:数据结构4——并查集(入门)https://www.cnblogs.com/xzxl/p/7226557.html 一、问题引入 原题:杭
阅读全文
摘要:php数据结构课程 7、队列实战 一、总结 一句话总结: 1、php创建数组的方法? 2、php中$arr.array_push()这样的方式使用函数对么? 3、php中array_unshift函数的作用是在数组前面去掉一个元素么? 4、php中的array_shift【将数组开头的单元移出数组】
阅读全文
摘要:php数据结构课程 6、常见排序有哪些 一、总结 一句话总结: 1、排序算法的稳定性是什么? 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,Ai=Aj,且Ai在Aj之前,而在排序后的序列中,Ai仍在Aj之前,则称这种排序算法是稳定的;
阅读全文

浙公网安备 33010602011771号