![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法&数据结构
算法&数据结构
Lvan的前端笔记
十年磨一剑
展开
-
算法:树结构遍历以及模糊搜索等操作
算法:树结构遍历以及模糊搜索等操作原创 2023-06-21 10:40:45 · 428 阅读 · 0 评论 -
算法:切换字母大小写
算法:切换字母大小写原创 2023-05-09 18:22:53 · 71 阅读 · 0 评论 -
算法:数字千分位格式化
算法:数字千分位格式化原创 2023-05-09 18:10:21 · 47 阅读 · 0 评论 -
算法:英文单词的前缀匹配-hash table
用hash table来解决英文单词的前缀匹配问题原创 2023-04-30 16:23:52 · 91 阅读 · 0 评论 -
算法:获取1-10000之间所有的对称数(回文数)
获取1-10000之间所有的对称数(回文数)原创 2023-04-25 23:04:23 · 517 阅读 · 0 评论 -
排序算法总结-快速排序
快速排序原创 2023-04-25 22:30:50 · 369 阅读 · 0 评论 -
算法:获取字符串中连续最多的字符以及次数-跳步嵌套循环双指针
获取字符串中连续最多的字符以及次数-跳步嵌套循环双指针原创 2023-04-23 22:26:27 · 126 阅读 · 0 评论 -
算法:把数组中的 0 移动到最后-双指针思想
把数组中的 0 移动到最后-双指针思想原创 2023-04-23 22:08:19 · 84 阅读 · 0 评论 -
算法:求斐波那契数列的第n项
求斐波那契数列的第n项用递归好还是用循环?原创 2023-04-22 22:11:25 · 542 阅读 · 0 评论 -
数据结构:什么是堆,和二叉树有什么关系
回顾堆栈模型,并详细说明堆和二叉树的关系原创 2023-04-18 16:09:10 · 426 阅读 · 0 评论 -
数据结构:二叉树
基本概念1、节点是构成复杂数据结构的基本组成单位。链接长方形圆圆角长方形菱形有空再更原创 2020-05-09 16:25:24 · 190 阅读 · 0 评论 -
什么是字面量?和变量、常量的关系?
字面量的概念在计算机科学中,字面量(literal)是用于表达源代码中一个固定值的表示法(notation)。几乎所有计算机编程语言都具有对基本值的字面量表示,诸如:整数、浮点数以及字符串;而有很多也对布尔类型和字符类型的值也支持字面量表示;还有一些甚至对枚举类型的元素以及像数组、记录和对象等复合类型的值也支持字面量表示法。举例int a; //变量const int b = 10; //b为常量,10为字面量string str = “hello world!”; // str 为变量,hell原创 2021-09-07 11:43:46 · 1157 阅读 · 0 评论 -
二叉排序树与红黑树
文章目录二叉排序树概念举例缺陷红黑树红黑树性质标准红黑树红黑树的变换应用人生感悟二叉排序树概念二叉排序树(Binary Sort Tree)(BST),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;(4)没有键值相等的结点。举例123567891011121315这种数据结构有什么好处?答:便于遍历原创 2020-05-12 11:30:57 · 990 阅读 · 0 评论 -
B树与B+树
为什么说B+树比B树更适合做操作系统的数据库索引和文件索引?1、B+树的磁盘读写的代价更低B+树内部结点没有指向关键字具体信息的指针,这样内部结点相对B树更小。2、B+树的查询更加的稳定因为非终端结点并不是最终指向文件内容的结点,仅仅是作为叶子结点中关键字的索引。这样所有的关键字的查找都会走一条从根结点到叶子结点的路径。所有的关键字查询长度都是相同的,查询效率相当。以后再更,我要写简历去咯...原创 2020-06-06 22:27:28 · 2698 阅读 · 1 评论 -
算法:二叉树的三种遍历 & 二叉搜索树的遍历
二叉树的三种遍历原创 2023-04-15 11:00:00 · 346 阅读 · 0 评论 -
算法:找出数组中和为n的两个数-双指针思想
双指针 vs 二次遍历原创 2023-04-14 10:00:00 · 173 阅读 · 0 评论 -
算法:分别用循环和递归实现二分法
我觉得递归更香原创 2023-04-14 09:00:00 · 142 阅读 · 0 评论 -
算法:链表和数组哪个实现队列更快
当然是链表更适合实现队列啦原创 2023-04-13 10:00:00 · 891 阅读 · 0 评论 -
链表基础 & 如何用js反转链表
常用的数据结构之链表原创 2023-04-13 09:00:00 · 366 阅读 · 0 评论 -
算法:什么是队列 & 用两个栈实现一个队列
了解队列,以及一些例子原创 2023-04-12 10:00:00 · 253 阅读 · 0 评论 -
算法:判断字符串是否括号匹配
用栈的思路来解决算法题原创 2023-04-12 09:00:00 · 623 阅读 · 0 评论 -
算法:将一个数组旋转k步
不同的思路,哪种才是最优解?原创 2023-04-11 16:38:48 · 620 阅读 · 0 评论 -
对称加密与非对称加密的概念以及算法RSA
对称加密在 1976 年以前,所有的加密算法都是同一种模式:(1)甲方选择某一种加密规则,对信息进行加密;(2)乙方使用同一种规则,对信息进行解密。由于加密和解密使用同样规则(简称"密钥"),这被称为"对称加密算法"(Symmetric-key algorithm)。弱点:甲方必须把加密规则告诉乙方,否则无法解密。保存和传递密钥,就成了最头疼的问题。非对称加密在 1976 年,两位科学家提出非对称加密算法:(1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。原创 2021-08-21 20:11:25 · 551 阅读 · 0 评论 -
算法:实现两个大数字相加
在 js 中,过大的数字会导致精度丢失从而出现问题,比如:那么如何实现两个大数字相加呢?const a = '123456789';const b = '11111111111111111111111111'; function add(a, b) { var temp = 0; var res = "" a = a.split(""); b = b.split(""); while (a.length || b.length || temp) {原创 2021-02-24 18:46:59 · 445 阅读 · 0 评论 -
算法:将一天24小时按每半小划分成48段
将一天24小时按每半小划分成48段,我们用一个位图表示选中的时间区间,例如110000000000000000000000000000000000000000000000,表示第一个半小时和第二个半小时被选中了,其余时间段都没有被选中,也就是对应00:00~01:00这个时间区间。一个位图中可能有多个不连续的时间区间被选中,例如110010000000000000000000000000000000000000000000,表示00:00-1:00和02:00-02:30这两个时间区间被选中了。要求:写一原创 2021-02-24 11:40:51 · 1914 阅读 · 3 评论 -
排序算法总结-选择排序
思路第 1 轮,找出数组中最小的数,将第一项和最小的数互换位置。第 2 轮从下标2开始找最小的数,和第二项互换位置。…第 i 轮从下标 i 开始找最小的数,和第 i 项互换位置。代码var arr = [9, 3, 1, 5, 4, 6, 2, 8, 7];function selectSort(arr) { for (var i = 0; i < arr.length -1; i++) { // var firstIndex = i; for (var j = i原创 2021-02-23 16:46:55 · 55 阅读 · 0 评论 -
算法:求二进制的和
最近面试滴滴的前端,面试官问了一道算法题,是求两个二进制的和,让我 5 分钟之内写出来,当时心机,想到的思路是将两个二进制转化为 10 进制,相加之后得到的值再转换为二进制function changeTen (...params) { let total = 0 for (let i of params) { total += parseInt(i, 2) } console.log(total.toString(2))}changeTen('11', '10', '10',原创 2020-06-28 18:20:44 · 234 阅读 · 0 评论 -
常用加密算法合集与crypto模块的使用
crypto模块的目的是为了提供通用的加密和哈希算法。用纯JavaScript代码实现这些功能不是不可能,但速度会非常慢。Nodejs用C/C++实现这些算法后,通过cypto这个模块暴露为JavaScript接口,这样用起来方便,运行速度也快。MD5和SHA1MD5是一种常用的哈希算法,用于给任意数据一个“签名”。这个签名通常用一个十六进制的字符串表示:const crypto = require('crypto');const hash = crypto.createHash('md5');原创 2020-06-09 16:54:00 · 1161 阅读 · 0 评论 -
排序算法总结-冒泡排序
思路两个数比较大小,较大的数下沉,较小的数冒起来。。。。有空再更原创 2020-02-07 12:27:49 · 140 阅读 · 0 评论 -
算法:复杂度
概念算法复杂度包括 时间复杂度 和 空间复杂度,一般我们只说时间复杂度。时间复杂度执行算法所需要的计算工作量。时间复杂度实际上是一个函数,代表基本操作重复执行的次数,进而分析函数变量的变化来确定数量级,数量级用O表示,所以算法的时间复杂度为:T(n) = O(f(n))常用的时间复杂度所耗费的时间从小到大依次是:O(1) < O(logn) < (n) < O(n...原创 2020-02-04 14:37:59 · 245 阅读 · 1 评论