
刷题系列
文章平均质量分 74
小乖~
这个作者很懒,什么都没留下…
展开
-
js柯里化之无敌最终版
function addCurrying(...arg) { //接受第一组参数 let args = arg var temp = function (...newArgs) { //接收各组参数 args = [ ...args, ...newArgs ] return temp } //当被alert()、或者console.log()时,调用toSt原创 2020-07-20 15:08:16 · 129 阅读 · 0 评论 -
关于ES5和ES6的继承问题(区别吧)
ES5的继承方式主要是组合继承,即构造函数继承(apply、call改变this的指向,立即执行获得父类的方法和属性)+原型链继承(父类的实例构成子类的原型对象)。function Parent(name) { this.name = name; this.say = function () { console.log('父的say'); }}Parent.prototype.age = 8;Parent.prototype.sleep = function () { con原创 2020-07-19 19:15:45 · 243 阅读 · 0 评论 -
斐波那契数列的实现方式(4种)
斐波那契指数列:1、1、2、3、5、8、13、21、34…在数学上,斐波纳契数列定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*);递归方法第一种当然是递归啦。但是效率不高。fb(5)= fb(4)+fb(3)fb(4)= fb(3)+fb(2)计算这两个就要计算两次fb(3),所以几乎每个都有重复计算的情况,所以效率自然不高。但是写起啦还是很简单明了滴。。。function fb(n){ if(n<=2){ return 1原创 2020-07-12 17:22:33 · 1389 阅读 · 0 评论 -
LeetCode刷题---有效的括号(20)
题目链接:点击即可题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true思路1原创 2020-07-12 15:57:54 · 175 阅读 · 0 评论 -
LeetCode刷题---三数之和(15)
题目链接:点击即可题目给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]思路1、先排序2、难点:不能有重复,则遍历的时候arr[i]==a[i-1]时,continue,跳过这个数3、设原创 2020-07-12 11:18:50 · 167 阅读 · 0 评论 -
js实现一个链式调用,加上执行事件、流程控制
var p = new Queue();p.task(1000, () => { console.log(1);}).task(2000, () => { console.log(2);}).task(6000, () => { console.log(6);})实现上面的类,按照设定时间执行依次执行所设定任务。function Queue() { this.arr = []; setTimeout(() => { this.next();原创 2020-07-11 22:30:56 · 874 阅读 · 0 评论 -
js防抖和节流实现
//写防抖(一段时间内,多次触发,只执行最后一次)//用延时器实现function debunce(fn,delay){ var timer = null return function(){ //清楚上一次延时器,关键,可以终止多次触发的动作 clearTimeout(timer) //重新设置新的延时器 timer = setTimeout(function(){ fn.apply(this) },delay) }}//写节流(触原创 2020-07-07 16:47:29 · 238 阅读 · 0 评论 -
手写一个继承(组合继承)
function superType(){}function subType(){//构造函数继承 superType.call(this,...args)}//原型链继承subType.prototype = new superType()//对象增强subType.prototype.constructor = subType()原创 2020-07-07 16:46:49 · 459 阅读 · 0 评论 -
new的原理用代码实现
function my_new(f) { return function () { //创建一个对象,并将prototype赋值给__proto__ var obj = { "__proto__": f.prototype } //然后将构造函数的this赋值给这个对象,并执行这个函数 f.call(o, ...args); //返回这个对象 return obj }}new的实现原理:1、创建一个对象,并将prototyp原创 2020-07-07 10:56:28 · 233 阅读 · 0 评论 -
js数组去重总结
大致总结了四种方法,面试的时候说这四种应该差不多了。。。。Setlet array = [1, 2, 2, 3, 4, 5, 3, 2, 6, 8]console.log([...new Set(array)]);console.log(Array.from(new Set(array)));//Array.from()是把类数组转成数组indexOf + 循环let arr = []array.forEach(element => { if (arr.indexOf(eleme原创 2020-07-07 08:45:15 · 121 阅读 · 0 评论 -
LeetCode刷题---最长回文子串(5)
题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”思路暴力循环,分两种情况1、rabcbake,奇数回文 abcba2、rabbarkf,偶数回文 rabbar遍历的时候,分别向两边观察开,如果不等则判断是否比目前的最长回文子字符长,长则替代。/** * @param {string} s * @r原创 2020-07-03 23:30:43 · 179 阅读 · 0 评论 -
LeetCode刷题---无重复字符的最长子串(3)
题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。思路主要原创 2020-07-03 17:16:27 · 218 阅读 · 0 评论 -
LeetCode刷题---两数之和(1)
题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思路构建一张哈西表的方法。可以用数组也可以用对象来实现这样的对应。例如; [2, 7, 11, 15],要找出和为9的。那么,因为题目找的原创 2020-07-02 10:53:08 · 127 阅读 · 0 评论