JS
梨子的博客
这个作者很懒,什么都没留下…
展开
-
剑指offer-57 和为s的连续正数序列
题目描述:输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。输入:target = 9输出:[[2,3,4],[4,5]]输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]滑动窗口法头尾指针,最开始头指针指向数组0下标处,尾指针比头指针多1,而后开始移动,利用等差数列的求和公式来对头尾指针的区间内的元素求和/** *原创 2020-08-21 17:58:20 · 161 阅读 · 0 评论 -
剑指offer-39 数组中出现次数超过一半的数字
题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2限制:1 <= 数组长度 <= 500001.哈希法将数组中每个数作为对象的键存进空对象里,下一次循环判该键存在时次数+1,最后统计对象中每个键对应的值如果有大于nums长度一半的就输出时间复杂度O(n),空间复杂度O(n)/** * @param {numb原创 2020-08-20 17:37:05 · 141 阅读 · 0 评论 -
几个Promise栗子看JS的运行机制
今天又着重看了一下Promise,果然温故而知新,之前一直是懵懵懂懂的状态,赶紧记录下来。首先搞清楚几个名词:异步任务:是那些被引擎放在一边,不进入主线程、而进入任务队列的任务。例如setTimeout、setInterval、事件监听、Ajax请求等等。同步任务:会立即执行的任务。除了异步任务的任务除此之外还可以分为宏任务和微任务,这个在稍后介绍。主线程在运行的时候会有执行栈...原创 2020-03-21 00:40:05 · 222 阅读 · 0 评论 -
输入框监听键盘事件
键盘按键的主要事件有focus,keydown、keypress、keyup、input、onchange、blurkeydown:当用户按下键盘上的任意键(除了Prtsc)时触发,如果按住不放的话,会重复触发此事件;keypress:当用户按下键盘上的字符键(字母、数字、符号、回车空格)时触发,如果是组合键的话(shift+1)触发一次,如果按住不放的话,会重复触发此事件;keyup:当...原创 2020-03-18 00:31:57 · 2667 阅读 · 0 评论 -
Function.prototype和Object.prototype
先看一个栗子function Person(){ }var p = new Person()console.log(Person instanceof Person)//false 1console.log(String instanceof String)//false 2console.log(Array instanceof Array)//false 3 co...原创 2020-03-17 00:17:21 · 1657 阅读 · 0 评论 -
Object.create()和Object.assign()
Object.create()的语法:Object.create(proto[, propertiesObject])1.proto:新创建对象的原型对象。2.propertiesObject:可选。如果没有指定则为undefined,则是要添加到新创建对象的不可枚举(默认)属性(即其自身定义的属性,而不是其原型链上的枚举属性)对象的属性描述符以及相应的属性名称。这些属性对应O...原创 2020-03-15 21:20:28 · 858 阅读 · 0 评论 -
JS中的对象的继承
目录构造函数继承1.构造函数绑定2.使用prototype原型链和构造函数绑定的组合继承3.直接继承父函数的prototype4.使用空对象作为中介5.拷贝继承非构造函数继承1.object方法2.浅拷贝3.深拷贝构造函数继承假设现在有两个构造函数,Animal和Catfunction Animal(){ this.species ...原创 2020-03-15 14:52:07 · 367 阅读 · 0 评论 -
剑指offer-09 用两个栈实现队列
题目描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:...原创 2020-03-13 23:17:54 · 636 阅读 · 2 评论 -
new一个新对象的过程中都发生了什么?
new是一个运算符,在js中函数可以作为普通函数被调用做方法,也可以通过new来调用作为一个构造器。如果有一个函数function Person(name,age){ this.name = name; this.age = age; this.sayHello = function(){ console.log(this.name + "say ...原创 2020-03-13 16:37:40 · 171 阅读 · 0 评论 -
剑指offer-25 合并两个有序链表
目录思路1思路2(迭代)思路3(递归)题目描述:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000思路1新定义一个链表,然后分别从l1...原创 2020-03-13 15:41:40 · 104 阅读 · 0 评论 -
LeetCode系列-1.两数之和
描述:给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思路一...原创 2020-02-28 16:50:33 · 110 阅读 · 0 评论 -
刷题总结
JS中的字符串不可变性 JS中字符串的值是无法被改变的,例如var S1 = "hello world!"S1[0] = 'a'console.log(S1[0]) //打印'h',不会变成'a'但实施以下操作是成立的:var s1 = "heihei"s1 += "haha"console.log(s1) //"heiheihaha"var s2 = "w...原创 2020-02-28 15:57:38 · 336 阅读 · 0 评论 -
剑指offer-65 两数之和
两数之和描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路:不能用四则运算符,考虑使用位运算。加法需要处理的最重要的步骤就是进位。在位运算中,异或(^)结果为1是表示两位不同,则是表示这两个数在这一位上一个是0一个是1,在进行“相加”时,不用进位。与(&)运算结果为1是表示两位都为1,则是表示这两个数在这同一位上都是1,需要进位,进位就是左...原创 2020-02-28 16:50:51 · 82 阅读 · 0 评论 -
剑指offer-18 删除链表的节点
描述:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。示例:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.常规思路:定义一个暂时变量用来删除节点,注意若要删除a节点,则需使用...原创 2020-02-28 16:51:01 · 215 阅读 · 0 评论 -
JavaScript学习之路
for...in...循环会自动跳过那些未被赋值的元素,而for循环不会跳过for: 比较适合遍历数组,字符串等等。 for in: 比较适合遍历对象,遍历对象时使用这个再合适不过了。 while: while 的话,与 for 的使用场景差不多。唯一不同的是,遍历的条件必须满足。 do while: 至少执行一边的循环,遍历数组和字符串也是很方便。null和undef...原创 2020-03-06 17:17:28 · 393 阅读 · 0 评论