自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [力扣Hot 100------第11题--226.翻转二叉树]

So easy的事情~~~var invertTree = function(root) { if(root===null) return null; var temp=root.left; root.left=root.right; root.right=temp; invertTree(root.left); invertTree(root...

2020-02-28 21:59:46 332

原创 [力扣Hot 100------第10题--221.最大正方形]

这一题乍一看以为是回溯,但其实是二维dp.var maximalSquare = function(matrix) { const m=matrix.length; if(m===0) return 0; const n=matrix[0].length; if(n===0) return 0; var dp=new Array(m+1); ...

2020-02-28 21:55:41 665

原创 [力扣Hot 100------第9题--215.数组中的第K个最大元素]

利用到快速排序的partition算法,partition算法十分重要,一定要搞熟练~~var findKthLargest = function(nums, k) { var left=0,right=nums.length-1; const target=nums.length-k; while(left<=right){ var index=...

2020-02-28 20:10:20 274

原创 [力扣Hot 100------第8题--207.课程表]

这题算是DFS/BFS这块最难下手的一题了,需要多刷几遍~~1.BFSvar canFinish = function(numCourses, prerequisites) { var num=numCourses; var arr=new Array(num).fill(0); for(let item of prerequisites) arr[item[0]...

2020-02-28 10:01:43 423

原创 [力扣Hot 100------第7题--206.反转链表]

So easy的事情,记住连带表达式就好。var reverseList = function(head) { var pre=null,next=null; while(head!==null){ next=head.next; head.next=pre; pre=head; head=next;...

2020-02-27 20:46:42 296

原创 [力扣Hot 100------第6题--200.岛屿数量]

记住DFS的两个要点:递归+安全带;而BFS没有这些,而是借助一个stack数组。 1.DFSvar numIslands = function(grid) { var m=grid.length; if(m===0) return 0; var n=grid[0].length; var count=0; for(var i=0;i&lt...

2020-02-27 20:39:30 255

原创 [力扣Hot 100------第5题--198.打家劫舍]

属于难度略高一丢丢的dp,还行,重点是dp方程嘛~~dp[i]=Math.max(dp[i-2]+nums[i],dp[i-1]);var rob = function(nums) { if(nums.length===0) return 0; if(nums.length===1) return nums[0]; if(nums.length===2) retu...

2020-02-26 18:41:35 156

原创 [力扣Hot 100------第4题--160.相交链表]

方法肯定知道,就是这里有个细节:必须写成p1=p1===null?headB:p1.next; 而不是p1=p1.next===null?headB:p1.next;主要就是要考虑到压根两个链表没有交点的情况,这个时候就要及时解脱了。后种写法就会陷入无尽的死循环。var getIntersectionNode = function(headA, headB) { var p1=hea...

2020-02-26 17:46:55 226

原创 [力扣Hot 100------第3题--152.乘积最大子序列]

这道题跟 连续子数组的最大和 类似,唯一的区别在于这题是乘积,负数的影响在于会把当前最大变成当前最小,会把当前最小变成当前最大。因此需要另一个当前最小的变量,一旦nums[i]<0,那么就把当前最大和当前最小对调。var maxProduct = function(nums) { if(nums.length===1) return nums[0]; var gl...

2020-02-26 17:33:05 211

原创 [力扣Hot 100------第2题--148.排序链表]

归并排序(递归法)题目要求时间空间复杂度分别为O(nlogn)O(nlogn)和O(1)O(1),根据时间复杂度我们自然想到二分法,从而联想到归并排序;对数组做归并排序的空间复杂度为 O(n)O(n),分别由新开辟数组O(n)O(n)和递归函数调用O(logn)O(logn)组成,而根据链表特性:数组额外空间:链表可以通过修改引用来更改节点顺序,无需像数组一样开辟额外空间;递归额外空间...

2020-02-26 15:56:00 222

原创 [力扣Hot 100------第1题--142.环形链表II]

注意考虑下特殊情况,即什么时候返回null(链表长度为0或1或压根无环)var detectCycle = function(head) { if(head===null||head.next===null) return null; let fast=head,slow=head; do{ if(fast.next===null||fast.next....

2020-02-26 09:35:12 261

原创 【剑指Offer】52、正则表达式匹配

这题也用到二维dp,数组每一项都初始化为false,但要注意不能写成new Array(m+1).fill(new Array(n+1).fill(false)),因为这样m+1个一维数组就存在相互引用的问题,就会bug~~~这题要注意分成多种情况考虑:①恰好此时能匹配上,即s[i-1]===pattern[j-1]或pattern[j-1]='.',那么dp[i][j]=dp[i-1][...

2020-02-07 09:17:26 101

原创 【前端大挑战15题--03】dom节点查找

用了个递归function commonParentNode(oNode1, oNode2) { if(oNode1.contains(oNode2)) return oNode1; else return commonParentNode(oNode1.parentNode, oNode2);}

2019-11-21 13:46:50 129

原创 【前端大挑战15题--02】获取url参数

不知道为什么用Map不可以function getUrlParam(sUrl, sKey) { var arr=sUrl.split("?")[1].split("#")[0].split("&"); const obj={}; arr.forEach(ele=>{ const[key,value]=ele.split("="); ...

2019-11-20 18:58:33 171

原创 【前端大挑战15题--01】修改this指向

注意需要return 一下function bindThis(f, oTarget) { return f.bind(oTarget);}

2019-11-20 17:14:07 115

原创 【JS能力测评45题--45】判断是否符合 USD 格式

需要考虑$后的首位为0的情况function isUSD(str) { let reg=/^\$(([1-9]\d{0,2}(,\d{3})*)|0)(\.\d{2})?$/; return reg.test(str);}

2019-11-19 16:49:10 170

原创 【JS能力测评45题--44】判断是否符合指定格式

注意^,$不能漏~~~function matchesPattern(str) { let reg=/^\d{3}-\d{3}-\d{4}$/; return reg.test(str);}

2019-11-19 16:26:42 164

原创 【JS能力测评45题--43】获取指定字符串

function captureThreeNumbers(str) { let arr=str.match(/\d{3}/); if(arr) return arr[0]; return false;}

2019-11-19 16:22:59 108

原创 【JS能力测评45题--42】判断是否以元音字母结尾

Way One:function endsWithVowel(str) { let reg=/(a|o|i|o|u)$/gi; return reg.test(str);}Way Two:function endsWithVowel(str) { return "aeiouAEIOU".indexOf(str[str.length-1])>-1;}...

2019-11-19 16:17:30 241

原创 【JS能力测评45题--41】检查重复字符串

在正则表达式中,利用()进行分组,使用斜杠加数字表示引用,\1就是引用第一个分组,\2就是引用第二个分组。将[a-zA-Z]做为一个分组,然后引用,就可以判断是否有连续重复的字母。function containsRepeatingLetter(str) { return /([a-zA-Z])\1/.test(str);}...

2019-11-19 16:02:31 108

原创 【JS能力测评45题--40】判断是否包含数字

function containsNumber(str) { for(let i=0;i<10;i++){ if(str.indexOf(i)!=-1) return true; } return false;}

2019-11-18 19:06:35 107

原创 【JS能力测评45题--39】属性遍历

从ES5开始,有三种方法可以列出对象的属性for(let I in obj)该方法依次访问一个对象及其原型链中所有可枚举的类型object.keys:返回一个数组,包括所有可枚举的属性名称object.getOwnPropertyNames:返回一个数组包含不可枚举的属性function iterate(obj) { return Object.getOwnPropert...

2019-11-18 19:00:30 105

原创 【JS能力测评45题--38】批量改变变量的属性

注意开头是constructor哈function alterObjects(constructor, greeting) { constructor.prototype.greeting=greeting;}

2019-11-18 17:28:24 88

原创 【JS能力测评45题--37】改变上下文

function alterContext(fn, obj) { return fn.call(obj);}

2019-11-18 17:23:13 144

原创 【JS能力测评45题--36】乘法

取两者小数点后的最大长度作为最终结果需要保留的小数位数function multiply(a, b) { let str_a=a.toString(); let str_b=b.toString(); let little_len=Math.max(str_a.length-str_a.indexOf('.')-1, ...

2019-11-18 17:15:35 102

原创 【JS能力测评45题--32】模块

function createModule(str1, str2) { var obj = { greeting : str1, name : str2, sayIt : function(){return this.greeting + ", " + this.nam...

2019-11-16 21:43:25 102

原创 【JS能力测评45题--35】二进制转换

function convertToBinary(num) { let str=num.toString(2); while(str.length<8) str="0"+str; return str;}

2019-11-16 21:33:41 141

原创 【JS能力测评45题--34】二进制转换

将2进制(字符串)转10进制parseInt(str,2);function base10(str) { return parseInt(str,2);}

2019-11-16 17:12:26 184 1

原创 【JS能力测评45题--33】二进制转换

注意将数字转为二进制的字符串,语法为:num.toString(2)function valueAtBit(num, bit) { let str=num.toString(2); return str[str.length-bit];}

2019-11-16 17:06:56 143

原创 【JS能力测评45题--31】且运算

function and(a, b) { return a&&b;}

2019-11-16 16:30:35 107

原创 【JS能力测评45题--30】或运算

function or(a, b) { return a||b;}

2019-11-16 16:29:09 129

原创 【JS能力测评45题--29】柯里化

function curryIt(fn) { return function a(xa){ return function b(xb){ return function c(xc){ return fn.call(this,xa,xb,xc); } } }}...

2019-11-16 16:24:59 85

原创 【JS能力测评45题--28】二次封装函数

上一题刚说伪数组arguments不能用数组的splice(),slice()等方法;这一节就带来福音,可以利用call(),apply(),bind()等方法将数组原型Array.prototype的方法绑给伪数组。function partialUsingArguments(fn) { let args1=Array.prototype.slice.call(arguments,...

2019-11-16 15:28:39 132

原创 【JS能力测评45题--27】使用apply调用函数

注意arguments是伪数组,不能使用数组的一系列方法,如splice,forEach...都不能用function callIt(fn) { let args=[]; for(let i=1;i<arguments.length;i++) args.push(arguments[i]); return fn.apply(null,args);}...

2019-11-16 14:51:21 160 1

原创 【JS能力测评45题--26】使用arguments

注意arguments只是伪数组,不能用forEach()function useArguments() { let res=0; for(let i=0;i<arguments.length;i++) res+=arguments[i]; return res;}

2019-11-16 14:41:30 114

原创 【JS能力测评45题--25】二次封装函数

跟着理解来就好function partial(fn, str1, str2) { return function(str3){ return fn(str1,str2,str3); }}

2019-11-15 13:59:45 131

原创 【JS能力测评45题--24】使用闭包

Way One.使用forEachfunction makeClosures(arr, fn) { let res=[]; arr.forEach(ele=>res.push(function(){ return fn(ele); })); return res;}Way Two.使用let关键字function makeCl...

2019-11-15 13:50:53 114

原创 【JS能力测评45题--23】返回函数

利用闭包function functionFunction(str) { return function(str1){ return str+", "+str1; }}

2019-11-15 13:25:56 107

原创 【JS能力测评45题--22】函数的上下文

一共三种方法,call,apply,bind这三种方法都可以改变函数的this指向,但要注意bind绑定仅改变this指向,不会调用函数,故若想其调用,别忘了加().function speak(fn, obj) { //return fn.apply(obj); //return fn.call(obj); return fn.bind(obj)();}...

2019-11-15 13:20:09 88

原创 【JS能力测评45题--21】将数组 arr 中的元素作为调用函数 fn 的参数

灵机一动,居然写对了。。。function argsAsArray(fn, arr) {return fn(...arr);}

2019-11-15 13:04:46 288

空空如也

空空如也

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

TA关注的人

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