![](https://img-blog.csdnimg.cn/20201120143720670.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
记录算法笔记
龙鱼618
这个作者很懒,什么都没留下…
展开
-
算法 - 链表操作 - javascript版
https://www.cnblogs.com/bigsoft-185025529/p/10098622.html原创 2020-12-08 17:10:52 · 147 阅读 · 0 评论 -
算法 - 字符串处理 - javascript版
查询字符串中出现前三最多字符function searchTopThree(str) { let map = new Map(); for (let t of str) { if (map.has(t)) { map.set(t, map.get(t) + 1); } else { map.set(t, 1); } } let arr = []; for (let k of map.keys()) { const n = ar.原创 2020-11-30 17:27:45 · 159 阅读 · 0 评论 -
算法 - 计算墨水污染的格子 - javascript 版
如下二维数组代表一个棋盘中的每个格子,其中0标识被墨水污染的格子,1标识干净的格子,由于相邻的墨水会合并成一滴墨水,如下所示代表棋盘上有3滴墨水。[ [1,0,1,1,1,1], [1,1,1,1,0,1], [1,1,1,1,0,0], [1,1,0,1,1,1], [1,1,0,1,1,1], [1,1,1,1,1,1],]请编程计算棋盘上有几滴墨水。解:const arr = [ [1, 0, 1, 1, 1, 1], [1, 1, 1, 1,.原创 2020-11-22 00:44:37 · 516 阅读 · 5 评论 -
算法 - 二叉树操作 - javascript版
二叉树的递归遍历方式:前序遍历:先遍历根结点,然后左子树,再右子树中序遍历:先遍历左子树,然后根结点,再右子树后续遍历:先遍历左子树,然后右子树,再根结点二叉树的非递归遍历:深度优先遍历(主要利用栈的先进后出)广度优先遍历(主要利用队列的先进先出)定义TreeNodeconst Node = function (value) { this.value = value this.left = null this.right = null}Node.createTre原创 2020-11-21 23:39:22 · 94 阅读 · 0 评论 -
算法 - 二分查找 - JavaScrip 版
非递归实现function binarySearch(arr, target) { let left = 0; let right = arr.length - 1; let mid; while (left <= right) { mid = Math.floor((left + right) / 2); if (arr[mid] < target) { left = mid + 1; } else if (arr[mid] === tar原创 2020-11-21 16:31:09 · 87 阅读 · 0 评论 -
算法 - 快速排序 - javascript 版
非递归快速排序function quickSort(num) { const list = [[0, num.length - 1]]; while (list.length > 0) { let now = list.pop(); if (now[0] >= now[1]) { continue; } let i = now[0], j = now[1], flag = now[0]; while (i &l原创 2020-11-21 16:05:27 · 120 阅读 · 0 评论 -
算法 - 实现数字转excel列标转换 - javascript版
实现一个方法,将任意一个自然数(不用考虑整数溢出)变为相应的字符串举一些例子。根据映射规则:1-A, 2-B, 3-C, …, 26-Z, 27-AA, 28-AB, … , 52-AZ, 53-BA, 54-BB, …,function numToString(number){ const array = []; let numToString = function(nnum) { let num = nnum - 1; let a = parseInt(num / 26).原创 2020-11-21 11:55:30 · 552 阅读 · 0 评论 -
算法 - LRU算法实现 - JavaScript版
LRU全称是Least Recently Used,即最近最久未使用的意思。LRU算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。也就是说,当限定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。常用的案例是页面置换算法,就是要将不受欢迎的页面及时淘汰,免得浪费资源。实现 LRU用一个数组来存储数据,给每一个数据项标记一个访问时间戳,每次插入新数据项的时候,先把数组中存在的数据项的时间戳自增,并将新数据项的时间戳置为0并插入到数组中。每次访问数原创 2020-11-21 03:54:35 · 457 阅读 · 0 评论 -
经典思维面试题
1. 有两根香,每一根香的粗细是不均匀的,每一根香燃烧完毕需要1个小时,因为香的粗细是不均匀的,所以不能依靠香的长度比例来判断时间长短,问题是,怎么设置一个15分钟的定时器2根同时点,一根点一头,一根点两头.点两头的烧完的时候就是半个小时,这时候把点一头的香另一头点上,到烧完不就是15分钟2. 有3L和5L两个没有刻度的玻璃杯,你能用这两个杯子在不浪费水的情况下量出4L和7L的水吗?应该是 先加满5升杯,倒3升于小杯中,剩2升,小杯倒掉,大杯的2升倒入小杯,再将大杯装满,共7升。将大杯倒入小杯中原创 2020-11-21 00:16:10 · 4815 阅读 · 1 评论 -
算法 - 斐波那契 - javascript 版
输出一组斐波那契数列 (普通法)function queryFibonacci(n) { const arr = [1, 1] while(arr.length < n) { arr.push(arr[arr.length - 2] + arr[arr.length - 1]) } return arr}console.log(queryFibonacci(10))原创 2020-11-20 22:41:36 · 173 阅读 · 0 评论 -
算法 - 数据结构概述
1. 数组(Array)数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。数组可以说是最基本的数据结构,在各种编程语言中都有对应。一个数组可以分解为多个数组元素,按照数据元素的类型,数组可以分为整型数组、字符型数组、浮点型数组、指针数组和结构数组等。数组还可以有一维、二维以及多维等表现形式。2. 栈(Stack)栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。栈按照后进先出的原则来存储数据,也就是说,先插入的数据将被压入栈底,最后插入的数据在栈.原创 2020-11-21 16:22:57 · 945 阅读 · 0 评论