自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(121)
  • 收藏
  • 关注

原创 基础算法总结(排序,递归,二叉树----(时间复杂度很重要!!!!!))时时更新

一、排序1、冒泡排序两层循环,外层控制趟数,内层两两比价function sort(arr){var len = arr.length;for(let i = len-1; i >= 2 ; i--){ for(let j = 0 ; j < len; j++){ if(arr[j]>arr[j+1]){ let temp = arr[j] arr...

2020-03-05 16:54:54 925

原创 leetcode------交替合并字符串(javascript解法)

1、题目描述给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。返回 合并后的字符串 。2、示例3、思路将字符串转化为数组,直接用while循环在两个数组都不为空的前提下使用数组的api进行操作,最后返回的时候注意会有空数组,所以要全部进行join处理。4、代码/** * @param {string} word1 * @param {string} word2

2021-04-07 09:33:58 306

原创 封装一个通用的ajax请求

//封装ajaxfunction useajax(method, url, data, callback, type) { //创建兼容对象 var xhr; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else { xhr = new ActiveXObject("Microsoft.X...

2021-02-22 10:02:05 311

原创 leetcode--- 数组的度(javascript解法)

一、题目描述二、示例三、解题思路我想到的是利用map来保存每个数字出现的次数 ,并且用一个变量来保存最大值,通过遍历来不断更新最大值,其实仅仅保存最大值是不够的 还需要连续数组的最小值,所以也要保存改数字的出现的第一个位置,最后一个位置,来进行连续数组的最小数组的变量的更新。最后因为是输出min的值,我们用最后一次减去第一次的下标值+1就是最后的答案!四、代码/** * @param {number[]} nums * @return {number} */var findShort

2021-02-20 10:45:13 230

原创 剑指 Offer 53 - II. 0~n-1中缺失的数字(javascript解法)

一、题目描述一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。二、示例三、解题思路我的第一个思路是直接进行暴力的匹配 看哪个的值和下标不一致,直接输出,刚开始的时候会疏忽一个问题就是缺失最后一个的情况,所以需要给数组的最后加上任意的一个值,方便进行比较!二分法的思路进行比较可以先进行左右两边的分别比较来缩小比较的范围四、代码展示/** * @param {numbe

2021-02-08 17:06:37 176

原创 剑指 Offer 53 - I. 在排序数组中查找数字 I的hashmap解法(JavaScript)

一、题目描述统计一个数字在排序数组中出现的次数。直达链接是https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/二、示例三、解题思路其实看到是排好序的数组的话第一个思路是二分法,但是自己对于hash比较熟悉就用了这个方法四、代码/** * @param {number[]} nums * @param {number} target * @return {number} */var

2021-01-07 16:22:24 136

原创 网易互联网一面面经(前端)

1、公司里面你学到了哪些?有哪些进步?2、公司的开发流程是什么?你觉得有什么改进的方案3、上线的流程是怎么去进行的?4、react的运行流程是什么?5、react的数据管理方式有哪些?6、dva的底层原理是怎么实现的?7、react的事件绑定是如何实现的?8、react的fiber存在的原因?8、有一个多个任务的队列,如何保证任务串行并且进行如何进行错误监听?9、大文件上传应该怎么处理?(分片?)10、如果服务器有个集群,数据会分散到不同的服务器上,应该怎么处理汇总数据?11、两栏布局

2020-12-28 22:15:21 219

原创 leetcode ----(剑指 Offer 57 - II. 和为s的连续正数序列)(JavaScript解法)

一、题目描述输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。二、实例三、解题思路我们可以使用滑动窗口的思路来解决,整体来用for循环整体的次数,用whie(sum>target)来控制窗口的大小四、代码/** * @param {number} target * @return {number[][]} */var findContinuousSequence = f

2020-12-28 15:00:08 171 2

原创 面试算法总结之链表篇 (javascript)

链表相关算法总结1、链表的中间节点2、相交链表3、删除链表的节点4、反转链表5、反转链表2(这里是具体的讲解与过程)6、链表的倒数第k个节点 (这里是具体的讲解)7、环形链表8、回文链表1、链表的中间节点var middleNode = function(head) { slow = fast = head; while (fast && fast.next) { slow = slow.next; fast = .

2020-12-23 16:22:46 240

原创 JavaScript 洗牌算法

一 突然看到洗牌算法之前没有接触过,刚好记录下来function xiPai(arr){ let rest = [] while(arr.length>0){ let random = Math.floor(Math.random()*arr.length) rest.push(arr[random]) arr.split(random,1) } return rest}...

2020-12-10 16:10:04 334 1

原创 一种思路解决二叉树的普遍问题(JavaScript)面试必看

1、先序遍历//二叉树遍历//先序遍历const preOrderTraversal = function(root){ let res = [] function traversal (root){ if(root!==null){ res.push(root.val) traversal(root.left) traversal(root.right) } } traversal(root) return res}

2020-12-09 16:45:00 201

原创 javascript:自己实现一下bind()函数

一、我们先来看看bind()函数的基本知识从mdn上我们可以看到:bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind()的第一个参数,而其余参数将作为新函数的参数,供调用时使用。/////我们需要知道:1、bind是Functoin原型链中Function.prototype的一个属性,每个函数都可以调用它。2、bind本身是一个函数名为bind的函数,返回值也是函数,函数名是bound 。(打出来就是bound加上一个空格)。二、实

2020-11-24 16:33:37 679

原创 leetcode链表的中间节点(javascript解法)

一、题目描述给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。二、实例三、思路(1)借助外部的数组来得到n/2的值(2)遍历两次链表,第一次等到长度 n,第二次返回到n/2(3)快慢指针四、代码var middleNode = function(head) { slow = fast = head; while (fast && fast.next) { slow = slow.next

2020-10-30 16:23:24 333 1

原创 leetcode ---110平衡二叉树(JavaScript解法)

一、题目描述给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。二、示例三、解题思路主要的思路是用递归的思路,我们用返回的值的大小作为最后判断的依据,如果满足条件(左右子树高度差小于1)的话返回左右子树高度的最大值加一,否则返回-1.四、代码/** * Definition for a binary tree node. * function TreeNode(val) { * this.

2020-09-17 11:19:43 237

原创 leetcode ---160相交链表(JavaScript解法)

一、题目描述二、示例三、解题思路有一种思路就是用双指针,我们使用两个指针 node1,node2 分别指向两个链表 headA,headB 的头结点,然后同时分别逐结点遍历,当 node1 到达链表 headA 的末尾时,重新定位到链表 headB 的头结点;当 node2 到达链表 headB 的末尾时,重新定位到链表 headA 的头结点。这样,当它们相遇时,所指向的结点就是第一个公共结点。也就是两次轮换使得距离最后一位的距离相等。/** * Definition for singly-

2020-09-17 11:13:26 212

原创 一些手写的js面试题总结(call、apply的实现、防抖节流的实现、深浅拷贝的实现、promise的all、race的实现)

参考链接https://lq782655835.github.io/blogs/js/js-polyfill.html1、实现发布订阅模式// 发布订阅const event = { obj: {}, on: function(name, fn) { (this.obj[name] || this.obj[name] = []).push(fn) }, emit: function(name, ...args) { if (Array.i

2020-09-07 15:49:10 714

原创 对Iterator、await/async 和 Generators的理解和区别

一、具体认识(这个链接讲解的非常详细)Iterator简单的说,我们常用的 for in 循环,都是通过调用被循环对象的一个特殊函数 Iterator 来实现的,但是以前这个函数是隐藏的我们无法访问, 从 Symbol 引入之后,我们就可以通过 Symbol.iterator 来直接读写这个特殊函数。对于循环语句来说,他并不关心被循环的对象到底是什么,他只负责调用 data[Symbol.iterator] 函数,然后根据返回值来进行循环。所以任何对象只要提供了标准的 Iterator 接口

2020-09-07 14:53:50 260

原创 leetcode --两数相加(javascript解法)

一、给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。二、例子三、思路四、代码/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.n

2020-09-02 16:28:35 392

原创 leetcode-------不同路径(JavaScript解法)

一、题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?二、示例三、解题思路这个题目我选择用动态规划,这个的动态方程也比较简单,从最后一个入手开始,只能从上或者左边走的话,就可以是上和左的和,一次类推遍历循环。这里要注意的是第一行和第一列要进行初始化dp[i][0] = 1,dp[0][j] = 1.四、代码/** *

2020-08-27 15:15:21 216

原创 promise处理并发请求

asyncPool=(poolLimit, array, iteratorFn)=> { let i = 0; const ret = []; const executing = [] const enqueue = function () { // 边界处理,array为空数组 if (i === array.length) { return Promise.resolve(); } ...

2020-08-25 15:11:16 2232

原创 滴滴秋招面经(前端)

一、自我介绍二、一些问题var let 的区别以及作用域let 块级作用域 临时性死区var 函数作用域值传递和引用传递四种定位并且具体相对的定位位置原型与原型链讲讲this的几种指向全局的this箭头函数call apply bind 原理以及如何实现对于dva了解吗,介绍一下redux的底层原理,想要问的是观察者模式,要能手写(函数放在数组里面,各个函数有一个特定的key,直接去调用)react的生命周期 (老的就说老的,新的就说新的别混合说)更新后会触发的以及自己sets

2020-08-12 17:40:20 260

原创 腾讯一面面经(前端)

我之前在京东实习过,目前在滴滴实习。一、自我介绍了解了一些做的项目的细节。二、一些问题元素的隐藏与显示cookie localstorage的区别与用法内存泄漏(闭包、没有清理的定时器等等)如何监控内存泄漏定位知道哪几种? 相对定位和绝对定位的宽度和高度由什么决定vue 的v-show v-ifvue的组件件传参react的组件传参常见的Http状态码301、302的具体应用场景判断数组的方式(原型链)typeof 用法写一个函数,如何要获得浏览器的最小规定字体写了一个函

2020-08-11 21:06:12 343 1

原创 关于react面试的准备(Setstate、生命周期、Fiber等等)

一、关于 setstate1、react 的setstate介绍与注意的点1----------------------setState(updater, callback)这个方法是用来告诉react组件数据有更新,有可能需要重新渲染。它是异步的,react通常会集齐一批需要更新的组件,然后一次性更新来保证渲染的性能,所以这就给我们埋了一个坑:那就是在使用setState改变状态之后,立刻通过this.state去拿最新的状态往往是拿不到的。2----------------------第一个使用

2020-08-09 15:45:12 580

原创 阿里秋招面经

一、讲一讲你在公司都干了些什么,用到了什么以及自己的思考有什么,做的这些产品有什么价值和意义有没有根据用户的反馈进行迭代,具体的举出一些case二、项目的完整开发流程是什么,从gitlab上拉代码到上线的具体过程。上线的具体流程,以及背后的原理。三、知道你们用的是什么路由方式吗?用过history没,后端要进行怎样的配置。可以配置一些中间件来进行一些配置跳转。四、关于react的readux的数据流向以及connect的原理五、setstate的具体原理,是如何进行更新state的(这里是一篇很好

2020-08-04 10:09:07 209

原创 面试题目----关于JS闭包的题目

1、function fun(n,o) { console.log(o) return { fun:function(m){ return fun(m,n); } };}var a = fun(0); a.fun(1); a.fun(2); a.fun(3);//undefined,?,?,?var b = fun(0).fun(1).fun(2).fun(3);//undefined,?,?,?var c = fun(0).fun(1); c.fu

2020-07-16 16:58:19 253

原创 记录一道经典的面试题(js)

一、题目描述function Foo() { getName = function() { alert(1); } return this}Foo.getName = function() { alert(2); }Foo.prototype.getName = function() { alert(3); }var getName = function () { alert(4); }function getName() { alert(5); }// 输出值Foo.

2020-07-16 15:54:30 177

原创 leetcode------剑指 Offer 18. 删除链表的节点(javascript解法----链表)

一、题目描述给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。二、示例三、思路拿到这个链表的问题我的第一眼就是去看可以快慢指针还是循环遍历,这个题目比较简单就用了遍历while中进行判断,符合条件的跳过,这里注意要break,不然会死循环,最后返回头指针就可。四、代码/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val;

2020-07-10 10:23:22 338

原创 leetcode -------面试题 16.11. 跳水板(JavaScript解法---数学思路)

一、题目描述你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。二、示例三、解题思路这里需要注意的是临界情况,当k===0的时候,return 空数组,还有当short和long相等的时候,只有一种可能,所以我们返回任意一个长度乘以k,那么剩下的我们用一个循环来依次进行遍历累加,push到新的数组进行return。四、代码/**

2020-07-08 10:36:39 142

原创 leetcode----路径总和(二叉树|javascript解法)

一、题目描述给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。二、示例三、思路二叉树的方法的话我一般使用的是递归的方法,每次经过一个就进行减去当前值的操作,当在叶子节点时看sum是否等于0,返回ture。四、代码/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; *

2020-07-07 11:31:28 557

原创 leetcodde------反转链表2(javascript解法)

一、题目描述反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。二、示例三、解题思路四、代码/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } *//** * @param {ListNode} head * @param {number} m * @param {number} n *

2020-07-07 11:17:55 143

原创 leetcode----378. 有序矩阵中第K小的元素(javascript的暴力解法与二分解法详解)

一、题目描述给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素。二、示例三、解题思路第一种思路是我们可以直接暴力求解,将二维数组展平,再去寻找第K个元素第二种思路我们可以使用二分法来达到目的:a、确定值的范围是在数组的matrix[0][0]到matrix[n-1][n-1]之间,b、再去找到中间值,并且算出该数组中比当前值小的个数countc、将count与k比较,如果count比k小

2020-07-02 15:42:05 144

原创 leetcode---718. 最长重复子数组(JavaScript解法)---动态规划

一、题目描述给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。二、示例三、思路讲解由题目分析,我们可以先看最后两个数组的最后一个数,如果相同的话,再看前一个 如果符合的话 加上自身相同的1,所以最后的结果和之前的子结果是相关的。就可以写出dp方程,dp[i][j] = dp[i-1][j-1]+1,开始时先对数组进行一个初始化。为了优化我们可以将二维数组换成一维数组,方程就变为四 、代码/** * @param {number[]} A * @param {num

2020-07-01 11:22:25 406

原创 使用reduce实现map()

一、了解map()和reduce() https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/mapmap() 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。(2)reduce()二、具体实现Array.prototype.map = (func,callBackThis)=>{ return this.reduce(accu,cur

2020-07-01 00:59:47 902 1

原创 leetcode----用两个栈实现队列(JavaScript解法)

一、题目描述用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )二、示例三、解题思路我们使用数组的pop()和push()方法来实现。四、代码var CQueue = function() { this.stack1 = [] this.stack2 = []};/** * @param {number}

2020-06-30 20:52:34 975

原创 leetcode---长度最小的数组(JavaScript解法----滑动窗口)

一、题目描述给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。二、示例三、思路分析这个题目我们拿到之后分析,他要一个连续的区间,是一个典型的双指针问题,我们使用快慢指针以及两层循环实现。连续子数组可以表示为 [i,j]:从第 i 项到第 j 项如果 [i,j] 的 sum >= s ,如果扩张窗口,条件依然满足,但更背离“最小长度”的要求所以选择收缩窗口,i 右移,直到条件不

2020-06-29 11:19:34 528

原创 Leetcode--缺失的最小的数(JavaScript解法)

一、题目描述给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。二、示例三、解题思路其实刚开始的时候的思路也是有的,比如新建一个哈希表来处理,或者说我们先进行排序再使用二分法的方式来进行查找,但是题目要求的是空间复杂度为o(1),所以我们可以在原来的数组上使用哈希,其实哈希的本质就是数组,我们不过是使用它不添加额外的空间。具体的思路是这样的:我们可以将每个值放在第i-1位置上,比如1放在0上,2放在1上这样的思路,先进行遍历,依次判断进行交换,交换的条件就是:值在0-len范围内

2020-06-28 11:36:37 434

原创 dva数据流(react)学习

因为公司用到所以进行了一个简单的学习,初期接受的时候没搞清楚本质导致绕了很多的圈子,所以重新整理一下学习思路,方便以后复习!一、简单介绍        dva 首先是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router 和 fetch,所以也可以理解为一个轻量级的应用框架。二、重要的模块(dva 通过 model 的概念把一个领域的模型管理起.

2020-06-11 16:27:59 4584

原创 Antd Upload图片上传之前使用promise进行宽高的校验

在写需求的时候要进行宽高的校验,再进行上传,可以使用promise来进行判断,是继续resolve()还是reject()使用示例 (直接上代码)beforeUpload = (file) => { const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png'; if (!isJpgOrPng) { message.error('You can only upload JPG/PNG

2020-05-28 17:33:58 1718

原创 Leetcode ----无重复字符的最长子串(JavaScript解法)

一、题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。二、示例三、解题思路使用类似滑动窗口的思路来解决,借助一个空数组,当下一个字符没有在新声明的数组中时 就入数组,如果有的话就使用数组的splice函数对原数组进行切割,切掉该索引之前的数,从当前开始。一次判断,使用循环,计算max就是arr的length。四、代码```javascript/** *...

2020-05-02 09:36:29 296

原创 关于react的一些知识点总结

1、为什么选择框架?组件化:使我们的工程易于维护,容易拓展分层的设计:mvvm框架等等使我们的代码解耦易于读写,视图数据分离开发效率:底层封装好了具体的方法来更新DOM,而非我们手动操作,解放了开发者的手动DOM成本,提高开发效率。状态管理的优化:例如vuex readux的使用现在的框架基本都有生命周期,方便我们在各个周期进行操作,比js的混杂模式更加的方便,清晰...

2020-04-18 14:00:55 561

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除