- 博客(92)
- 收藏
- 关注
转载 javascript 哈希表
基本概念:哈希表(hash table )是一种根据关键字直接访问内存存储位置的数据结构,通过哈希表,数据元素的存放位置和数据元素的关键字之间建立起某种对应关系,建立这种对应关系的函数称为哈希函数。哈希表的构造方法:假设要存储的数据元素个数是n,设置一个长度为m(m > n)的连续存储单元,分别以每个数据元素的关键字Ki(0<=i<=n-1)为自变量,通过哈希函数hash...
2020-02-18 15:18:54
1089
原创 js实现最大堆
有两个原始操作用于保证插入或删除节点以后堆是一个有效的最大堆或者最小堆:shiftUp(): 如果一个节点比它的父节点大(最大堆)或者小(最小堆),那么需要将它同父节点交换位置。这样是这个节点在数组的位置上升。shiftDown(): 如果一个节点比它的子节点小(最大堆)或者大(最小堆),那么需要将它向下移动。这个操作也称作“堆化(heapify)”。shiftUp 或者 shiftDo...
2020-02-16 15:30:05
1045
原创 Object.create()
Object.create(proto, [propertiesObject])//方法创建一个新对象,使用现有的对象来提供新创建的对象的proto。参数:proto : 必须。表示新建对象的原型对象,即该参数会被赋值到目标对象(即新对象,或说是最后返回的对象)的原型上。该参数可以是null, 对象, 函数的prototype属性 (创建空的对象时需传null , 否则会抛出TypeEr...
2019-11-14 15:33:49
324
原创 前端面试总结九
1.vue的diff算法Diff 作用Diff 的出现,就会为了减少更新量,找到最小差异部分DOM,只更新差异部分DOM就好了,这样消耗就会小一些,数据变化一下,没必要把其他没有涉及的没有变化的DOM 也替换了。Diff 做法Vue 只会对新旧节点中 父节点是相同节点 的 那一层子节点 进行比较,也可以说成是,只有两个新旧节点是相同节点的时候,才会去比较他们各自的子节点。最大的根节点一开...
2019-11-10 13:34:51
409
原创 JS实现合并多个有序数组
合并两个有序数组:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。(leetCode88)说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。/** * @param {number[]} n...
2019-11-07 12:19:55
1275
原创 JS数组中常用的方法总结
Array.isArray() 用于确定传递的值是否是一个 ArrayArray.isArray([1, 2, 3]); // trueArray.isArray({foo: 123}); // falseArray.isArray("foobar"); // falseArray.isArray(undefined); // falseArray.of() 返回一个由...
2019-11-07 10:41:09
141
原创 前端面试总结八
1.介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的?有两种, IE 盒子模型、W3C 盒子模型盒模型: 内容(content)、填充(padding)、边界(margin)、 边框(border);区 别: IE的content部分把 border 和 padding计算了进去2.PNG,GIF,JPG的区别及如何选GIF:256色无损,编辑 保存时候,不会损失...
2019-11-06 18:02:09
375
原创 JS实现两个链表的第一个公共结点
分析:首先要理解什么是公共节点,并不是两个节点的值相同就是公共节点。而是在第一链表和第二链表中都存在一个节点,该节点往后的子链表在两个链表中是相同的。方法一最直观就是暴力法,在第一链表上顺序遍历每个节点,每遍历到一个节点,就在第二个链表上顺序遍历每个节点。如果在第二个链表上有一个节点和第一个链表上的节点一样,则说明两个链表在这个节点上重合,但是这种方法的复杂度为O(m * nm∗n)(第一...
2019-11-06 09:52:27
455
原创 js实现二叉查找树的建立、插入、删除、遍历操作
概念二叉排序树(二叉查找树),它或者是一颗空树,或者是具有以下性质的二叉树:任意一个结点左子树上的所有结点值均小于该结点值任意一个结点右子树上的所有结点值均大于该结点值例如下图:插入和建立二叉排序树结点的数据结构function newNode(value){ this.value = value; this.left = null; this.righ...
2019-11-05 23:50:14
586
1
转载 关于二叉树的前序、中序、后序三种遍历
二叉树遍历分为三种:前序、中序、后序,其中序遍历最为重要。为啥叫这个名字?是根据根节点的顺序命名的。比如上图正常的一个满节点,A:根节点、B:左节点、C:右节点,前序顺序是ABC(根节点排最先,然后同级先左后右);中序顺序是BAC(先左后根最后右);后序顺序是BCA(先左后右最后根)。比如上图二叉树遍历结果前序遍历:ABCDEFGHK中序遍历:BDCAEHGKF后序遍历:DCBH...
2019-11-05 23:14:55
140
原创 JS 二维数组回形遍历
Given an n x n array, return the array elements arranged from outermost elements to the middle element, traveling clockwise.array = [[1,2,3], [4,5,6], [7,8,9]]snail(array) #=> [...
2019-11-04 12:43:43
974
原创 前端面试总结七
1.JS的事件冒泡和事件捕获事件事件是文档和浏览器窗口中发生的特定的交互瞬间。事件是javascript应用跳动的心脏,也是把所有东西黏在一起的胶水,当我们与浏览器中web页面进行某些类型的交互时,事件就发生了。事件可能是用户在某些内容上的点击,鼠标经过某个特定元素或按下键盘上的某些按键,事件还可能是web浏览器中发生的事情,比如说某个web页面加载完成,或者是用户滚动窗口或改变窗口大小。...
2019-11-04 11:30:18
480
原创 前端面试总结六
1.如何获取UA?通过JS获取浏览器UA(User Agent,用户代理)<script>function whatBrowser() {//获取完整的浏览器名称document.Browser.Name.value=navigator.appName; //获取浏览器的版本,一般不与实际的浏览器版本对应document.Browser.Version.value=nav...
2019-11-01 11:08:24
240
原创 前端面试总结五
1.OSI七层与TCP/IP四/五层网络架构OSI七层模型:开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。它从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。OSI七层参考模型的各个层...
2019-11-01 10:15:50
306
原创 前端面试总结四
1.Canvas和SVG的区别Canvas和SVG是html5支持的两种可视化技术。基于这两种技术,诞生了很多可视化工具。Echarts是基于Canvas技术的可视化工具,底层封装了原生的JavaScript的绘图 API。我们很容易联想到另一个同样很优秀的web前端可视化库D3,D3是也最流行的可视化库之一,它被很多其他的表格插件所使用。D3底层基于SVG技术,与Canvas完全不一样,SV...
2019-10-29 10:12:36
737
原创 前端面试总结三
离线资源前端兼容CSS3GPU加速SPDY协议单页面应用GZIP压缩CSS表达式和CSS滤镜HTTP长连接、短连接安全重点:类安全、csrf、xssVue原理vuexvue-router的两种模式及区别webpack是什么,用过什么...
2019-10-26 10:32:03
1033
原创 经典九大排序
九大排序排序是数据结构体系中最重要的内容之一,这一块必须要非常熟练的掌握,应该做到可以立马写出每个排序的代码,有多种实现方法的必须多种都能很快写出来,当然对各个排序的性能的了解也是基础且重要的。我们先对排序这一块进行一个整体的把握。内排序:在对待排序数据存放在内存中进行的排序过程。外排序:待排数据量太大,无法一次性将所有待排序数据放入内存中,在排序过程中需要对磁盘等外部储存器进行访问。比...
2019-10-23 16:35:16
523
1
原创 前端面试总结二
1.关于同步加载、异步加载、延迟加载、预加载(form和ajax之间的区别)同步加载:<script src="http://yourdomain.com/script.js"></script> (阻塞模式)会阻止浏览器的后续处理,停止对后续文件的解析、执行,如图像的渲染。浏览器之所以会采用同步模式,是因为加载的js文件中对dom的操作、重定向、输出documen...
2019-10-18 01:40:24
458
转载 链栈的JS实现
官方定义:链式栈是一种数据存储结构,可以通过单链表的方式来实现,使用链式栈的优点在于它能够克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分配额外的指针空间用来存放指针域。function LinkStack() { this.length = 0; this.top = null;//栈顶指针 };LinkStack.prototype.Node = fu...
2019-10-13 12:00:57
224
原创 大话数据结构----总结一
1.逻辑结构与物理结构按照视点的不同,我们把数据结构分为逻辑结构和物理结构。逻辑结构:逻辑结构是指数据对象中数据元素之间的相互关系。逻辑结构分为以下四种:集合结构:集合结构中的数据元素除了同属于一个集合外,它们之间没有其他关系。各个数据元素是“平等的”,它们的共同属性是“同属于一个集合”。线性结构:线性结构中的数据元素之间是一对一的关系。树形结构:树形结构中的数据元素存在一种一对...
2019-10-13 09:49:14
416
转载 微信小程序中使用阿里(iconfont)字体图标
一、下载图标1、首先在阿里云(iconfont)中找到项目中所需要的图标并且加入到购物车。2、添加至项目并下载本地(1)添加至项目 ,如图:下(2) 选择小程序项目名称并点确定,如图:下(3)选择Unicode,下载至本地二、微信小程序中使用1、复制iconfont.css中的所有代码,粘贴至小程序app.wxss文件中,如图:下2、界面(.wxml)文件中引用,代码如下:...
2019-10-06 18:28:01
668
1
转载 微信小程序左侧竖形滑动菜单(仿淘宝分类界面)
1、category.js中data初始化的数据(模拟),如果是跟后台数据库挂钩,可以用wx.request请求返回相似的对象数组再绑定到cartItems中。data: { cateItems:[ { cate_id:1, cate_name:'洗护', children: [ { ...
2019-10-06 16:15:33
3758
3
转载 封装一个方法:把URL参数解析为一个对象,来获取地址栏url里面的传递的参数
URL参数解析//获取url方法//window.location.href//function getUrlkey(url){ var params = {}, arr = url.split("?"); if (arr.length <= 1) return params; arr = arr[1].split("&"); for(...
2019-10-06 11:42:37
1881
转载 CSS----border绘制三角形和箭头
首先来看在为元素添加border时,border的样子;假设有如下代码:<div></div>div { width: 50px; height: 50px; border: 2px solid orange;}这是我们平常使用border最普遍的情况——往往只给border一个较小的宽度(通常为1-2px);然而这样的日常用法就会容易...
2019-10-06 11:37:07
863
原创 ES6标准入门----总结一
1.let命令下面的代码如果使用var,最后将输出10.var a=[];for(var i=0;i<10;i++){ a[i]=function(){ console.log(i); }}a[6](0);//10上面的代码中,变量i是var声明的,在全局范围内都有效,所以全局只有一个变量i。每一次循环,变量i的值都会发生改变。而循环内被赋给数组a的函数内部的conso...
2019-10-06 10:24:06
316
原创 微信小程序----大转盘 跑马灯效果
效果图<!--pages/pmd/pmd.wxml--><view class="container-out"> <view class="circle" wx:for="{{circleList}}" wx:key="" style="top:{{item.topCircle}}rpx;left:{{item.leftCircle}}rpx;backgro...
2019-10-01 17:32:36
541
转载 JS实现最短路径之迪杰斯特拉(Dijkstra)算法
最短路径: 对于网图来说,最短路径是指两个顶点之间经过的边上权值和最少的路径,我们称第一个顶点是源点,最后一个顶点是终点 迪杰斯特拉 ( Dijkstra) 算法是并不是一下子就求出 了 Vo 到V8 的最短路径,而是一步步求出它们之间顶点的最短路径,过程中都是基于已经求出的最短路径的基础上,求得更远顶点的最短路径,最终得到你要的结果//定义邻接矩阵let Arr2 = [...
2019-09-28 12:26:57
904
1
转载 最小生成树-普里姆(Prim)和克鲁斯卡尔(Kruskal)算法JS实现
如何在n个顶点,n*(n-1)/2条边中,筛选出具有n-1条边的,且具有最小代价的连通网呢?这就是最小生成树问题,下面介绍两种算法:1 普里姆(Prim)算法首先建立图的邻接矩阵存储:class Graph{ constructor(v,vr){ let len = v.length this.vexs = [].slice.apply(v); let arcs = []; ...
2019-09-28 10:05:42
370
转载 马踏棋盘
本文实例讲述了Python基于回溯法子集树模板解决马踏棋盘问题。分享给大家供大家参考,具体如下:问题将马放到国际象棋的8*8棋盘board上的某个方格中,马按走棋规则进行移动,走遍棋盘上的64个方格,要求每个方格进入且只进入一次,找出一种可行的方案。分析每到一格,就有[(-2,1),(-1,2),(1,2),(2,1),(2,-1),(1,-2),(-1,-2),(-2,-1)]顺时针8个...
2019-09-26 17:04:51
473
转载 JS实现哈夫曼数
function Huffman(str) { // 需要编码的字符串 this.str = str; // 键和频率映射表 this.keyCountMap = null; // 编码和键的映射表 this.codeKeyMap = {}; // 键和编码的映射表 this.keyCodeMap = {}; // 哈夫曼树节点列表 this.nodeLis...
2019-09-25 14:10:16
233
原创 线索二叉树JS
线索二叉树当用二叉链表来存储二叉树时,每次只能找到左右孩子的信息,不能直接找到其前驱和后继结点的信息。线索二叉树就解决了这个问题。结点结构图:LChild Ltag Data Rtag RChildA.如果有左孩子,则LChild继续指向左孩子,否则,指向该结点的前驱结点。B.如果有右孩子,则RChild继续指向右孩子,否则,指向该结点的后继结点。Ltag 用来标记是 左孩...
2019-09-25 11:54:17
226
原创 数据结构----树及二叉树的遍历JS
树:一种非顺序数据结构-树,它对于存储需要快速查找的数据非常有用。相关概念:根节点:位于树顶部的节点,没有父节点;内部节点:至少有一个子节点的节点(7,5,9,15,13,20);外部节点(叶节点):没有子元素的节点(第3层);子树:由节点和它的后代构成(节点13,12,14构成了一个子树);深度:节点的深度取决于它的祖先节点的数量;高度:取决于所有节点深度的最大值。二叉树...
2019-09-25 11:53:52
586
转载 JS实现KMP算法
KMP算法和BM算法KMP是前缀匹配和BM后缀匹配的经典算法,看得出来前缀匹配和后缀匹配的区别就仅仅在于比较的顺序不同。前缀匹配是指:模式串和母串的比较从左到右,模式串的移动也是从 左到右后缀匹配是指:模式串和母串的的比较从右到左,模式串的移动从左到右。KMPKMP也是一种优化版的前缀算法,之所以叫KMP就是Knuth、Morris、Pratt三个人名的缩写,对比下BF那么KMP的算法的...
2019-09-24 18:18:42
1248
转载 JS实现八皇后问题
背景八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为 n×n ,而皇后个数也变成n 。当且仅当n = 1或n ≥ 4时问题有解。盲目的枚举算法通过N重循环,枚举满足约束条件的解(八重循环...
2019-09-23 12:55:23
970
原创 JS实现汉诺塔问题
汉诺塔是一道经典的递归编程的经典题题目要求:汉诺塔问题来自一个古老的传说:在世界刚被创建的时候有一座钻石宝塔(塔A),其上有64个金碟。所有碟子按从大到小的次序从塔底堆放至塔顶。紧挨着这座塔有另外两个钻石宝塔(塔B和塔C)。从世界创始之日起,婆罗门的牧师们就一直在试图把塔A上的碟子移动到塔C上去,其间借助于塔B的帮助。每次只能移动一个碟子,任何时候都不能把一个碟子放在比它小的碟子上面。当牧师们...
2019-09-23 11:05:38
1227
原创 JS实现队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列是遵循FIFO(First In First Out,先进先出,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。f...
2019-09-23 10:19:34
170
原创 JS实现逆波兰表达式
常见的算术表达式,称为中缀表达式,例如:5 + ( 6 – 4 / 2 ) * 3波兰表达式也称为前缀表达式,以上面的例子为例,其波兰表达式为:+ 5 * - 6 / 4 2 3波兰表达式中缀表达式转换前缀表达式的操作过程为:(1)首先设定一个操作符栈,从右到左顺序扫描整个中缀表达式:如果是操作数,则直接归入前缀表达式;如果是括号:如果是右括号,则直接将其入栈;如果是左括号,...
2019-09-20 18:55:53
925
原创 JS中的算法与数据结构——栈
栈,又叫堆栈,是和列表类似的一种数据结构,但是却更高效,因为栈内的元素只能通过列表的一端访问,称为栈顶,数据只能在栈顶添加或删除,遵循 先入后出(LIFO,last-in-first-out) 的原则,普遍运用于计算机的方方面面。对栈的操作主要有两种,一是将一个元素压入栈,push方法,另一个就是将栈顶元素出栈,pop方法。除此之外,栈还有其他的一些属性和方法:查看当前栈顶的元素值,我们使用 ...
2019-09-20 15:59:20
184
1
原创 JS高级程序设计-总结二
1.文档信息作为HTML Document的一个实例,document对象还有一些标准的Document对象所没有的属性。URL属性中包含页面完整的URL(即地址栏中显示的URL),domain属性中只包含页面的域名,而referrer属性中则保存着链接到当前页面的URL。URL与domain属性时相互关联的。例如,如果document.URL等于http://www.wrox.com/Wi...
2019-09-20 12:17:47
239
原创 JS实现约瑟夫环
传说罗马人占领了乔塔帕特,41 个犹太人被围堵在一个山洞里。他们拒绝被俘虏,而决定集体自杀,大家决定了一个自杀方案,41 个人围成一个圈,由第 1 个人开始顺时针报数,每报数为 3 的人立刻自杀,然后再由下一个人重新从 1 开始报数,依旧是每报数为 3 的人立刻自杀,依次循环下去。其中两位犹太人并不想自杀,是数学家约瑟夫和他的朋友,他们发现了自杀方案的规律,选了两个特定的位置,最后只剩下他们两人,...
2019-09-18 18:44:20
2617
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人