算法(JavaScript版本)
Jackshijin
多做少说
展开
-
Leetcode LCP 题目集合(easy)
Leetcode Lcp 合集LCP 17: 有序机器人题目描述:小扣在秋日市集发现了一款速算机器人。店家对机器人说出两个数字(记作 x 和 y),请小扣说出计算指令:“A” 运算:使 x = 2 * x + y;“B” 运算:使 y = 2 * y + x。在本次游戏中,店家说出的数字为 x = 1 和 y = 0,小扣说出的计算指令记作仅由大写字母 A、B 组成的字符串 s,字符串中字符的顺序表示计算顺序,请返回最终 x 与 y 的和为多少。示例 1:输入:s = “AB原创 2020-12-29 11:53:48 · 1269 阅读 · 0 评论 -
非比较排序使用的例子
给定一个数组,求如果排序之后,相邻两数的最大差值,要求时 间复杂度O(N),且要求不能用非基于比较的排序。使用桶排序的思想解决如下:/** * 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时 间复杂度O(N),且要求不能用非基于比较的排序。 * @param nums * @returns {number} */function maxGap(nums) { ...原创 2019-08-22 22:27:49 · 151 阅读 · 0 评论 -
从荷兰国旗问题看快排
荷兰国旗问题:给定一个数组arr,和一个数num,请把小于num的数放在数组的 左边,等于num的数放在数组的中间,大于num的数放在数组的 右边。 function partition (arr, left, right, num) { // arr:数组 left:左边界 right: 右边界 let index = left; let...原创 2019-08-18 15:25:51 · 195 阅读 · 0 评论 -
javascript 旋转打印矩阵 及90度旋转矩阵
/** * 转圈打印矩阵 要求额外空间复杂度为O(1) * 1 2 3 4 * 5 6 7 8 * 9 10 11 12 矩阵转圈打印为: 1 2 3 4 8 12 11 10 9 5 6 7 * */function spiralOrderPrint(martix) { let tR = 0; let tC =...原创 2019-08-23 08:32:18 · 2146 阅读 · 0 评论 -
排序和搜索算法
冒泡排序:比较任何两个相邻的项,如果左边比右边大,则交换它们(从小到大排序)。function ArrayList(){ let array = []; this.insert = function (item) { array.push(item); }; this.toString = function () { retur...原创 2019-03-17 23:07:13 · 211 阅读 · 0 评论 -
图
图是网络结构的抽象模型,其是一组由边连接的节点。由一条边连接在一起的顶点称为相邻顶点; 一个顶点的度是其相邻顶点的数量路径是顶点v1,v2,v3,...vk的一个连续序列简单路径要求不包含重复的顶点如果一个图中不存在环,则称该图是无环的,如果图中每两个顶点间都存在路径,则该图是连通的。有向图:边有方向;无向图:边没有方向 如果图中每两个顶点间在双向上都存...原创 2019-03-17 21:39:24 · 282 阅读 · 0 评论 -
树
树的一些概念:节点:树中的每一个元素都叫节点根节点:位于树顶部的节点,它没有父节点内部节点:至少有一个子节点外部节点:没有子元素,又叫叶节点子树:由节点和它的后代组成深度:节点的属性,取决于它的祖先节点的数量树高度取决于所有节点深度的最大值二叉树:树中的节点最多可以有两个子节点,一个左侧子节点,一个是右侧子节点二叉搜索树:在右侧节点储存比父节点大或者等于父节点的值/...原创 2019-03-17 17:20:43 · 133 阅读 · 0 评论 -
散列表
散列函数(Hash):Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。散列表的JavaS...原创 2019-03-17 13:49:44 · 179 阅读 · 0 评论 -
字典的数据结构的JavaScript实现
字典:*字典是以【键,值】的形式来存储元素,也叫映射* set(key):向字典中添加新元素* remove(key): 通过键值移除键值对应的数据值* has(key):某个键值在字典中,返回true,否则返回false* get(key): 通过键值返回对应的数值并返回* clear(): 清除字典中的所有元素* size():字典长度* keys(): 将字典中的键名以数...原创 2019-03-10 16:20:18 · 294 阅读 · 0 评论 -
集合的JavaScript 实现
集合是由一组无序且唯一的项组成,集合具有不重复性,就是集合内的元素都是唯一的。是否可以这样理解,集合是一个既没有重复元素也没有顺序概念的数组。不包含任何元素的集合叫做空集。用JavaScript 创建一个基本的集合,包含以下方法:add(value):向集合中添加其没有的项remove(value):从集合中移除一个项has(value): 如果value 在集合中,返回true;...原创 2019-03-10 11:32:09 · 615 阅读 · 0 评论 -
链表
链表的实现:链表储存有序的元素集合,但是和数组不同的是,链表中的元素在内存中不是连续放置的,每个元素由一个储存元素本身的节点和一个指向下一个元素的引用(指针、链接)向空的链表中添加一个元素:向不为空的链表尾部添加元素:从链表中移除第一个元素:从链表中移除最后一个元素:从链表中间移除一个元素:在链表的开头添加一个元素:在链...原创 2019-03-09 23:31:52 · 174 阅读 · 0 评论 -
队列
完整的模拟队列的实现:function Queue() { let items = []; this.enqueue = function (element) { items.push(element); }; this.dequeue = function () { return...原创 2019-03-09 11:08:51 · 119 阅读 · 0 评论