首页
学习
活动
专区
圈层
工具
发布

力扣 (LeetCode)-合并两个有序链表,删除排序数组中的重复项,JavaScript笔记

笔记 变量 JavaScript的类型有数字,字符串,布尔值,函数和对象,还有undefined和null,数组,日期,正则表达式。...删除排序数组中的重复项 一、题目描述 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。...示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。...示例 2: 给定 nums = [0,0,1,1,1,2,2,3,3,4], 函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。...slowP]) { slowP++; nums[slowP] = nums[fastP]; } } return slowP + 1; }; 总结: 删除排序数组中的重复项

2K10

栈引发的问题思考

ECMAScript数组也提供了一种让数组的行为类似于其他数据结构的方法。具体说来,数组可以表现得就像栈一样,后者是一种可以限制插入和删除项的数据结构。...栈是一种LIFO(Last-In-First-Out,后进先出)的数据结构,也就是最新添加的项最早被移除。而栈中项的插入(叫做推入)和移除(叫做弹出),只发生在一个位置——栈的顶部。...而 pop() 方法则从数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项。 栈的应用 01 可以利用栈将一个数字从一种数制转换成另一种数制。...使用栈,在 JavaScript 中实现该算法就是小菜一碟。...编写一个函数,该函数接受一个算术表达式作为参数,返回括号缺失的位置。下面是一个括号不匹配的算术表达式的例子: 2.3 + 23 / 12 + (3.14159×0.24

80320
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    javascript数组去重的N种方法

    上一篇文章笔者演示了javascript如何将多为数组拍平成一维数组,今天给大家演示一下javascript对数组去重的几种方法,数组去重在数据处理的时候是经常碰到的。 那什么是数组去重呢?...简单理解就是将数组中重复项去掉,演示demo如下: var arr = [1,2,3,4,5,5,5,5,1,1,2,2,3,4,5,6,7,5,3]; 去重之后的结果: [ 1, 2, 3, 4, 5...,循环数组每一项,用空数组的indexOf方法检验每一项,如果不存在将其推入数组,循环完成后,返回新数组。...如果属性存在,说明数组元素重复直接跳过,属性不存在,说明数组元素为重复,将其推进空数组。依次循环,最后返回填充完成的新数组。这样做有什么好处呢?...数组的叠加器reduce方法,开始的时候传递一个空数组,用这个空数组去和后面的每一项做判断,判断结果不重复的话,将后面的一项填充进数组,并返回,重复的话不做添加,直接返回。

    96530

    JavaScript 是如何工作的:JavaScript 的共享传递和按值传递

    关于JavaScript如何将值传递给函数,在互联网上有很多误解和争论。大致认为,参数为原始数据类时使用按值传递,参数为数组、对象和函数等数据类型使用引用传递。...它对数组和对象使用按值传递,但这是在的共享传参或拷贝的引用中使用的按值传参。这些说有些抽象,先来几个例子,接着,我们将研究JavaScript在 函数执行期间的内存模型,以了解实际发生了什么。...堆:是分配 JavaScript 引用数据类型(如对象)的地方。 与堆栈不同,内存分配是随机放置的,没有 LIFO策略。 为了防止堆中的内存漏洞,JS引擎有防止它们发生的内存管理器。...Here,lion 和 tiger 是引用类型,它们的值存储在堆中,并被推入堆栈。它们在堆栈中的值是堆中位置的内存地址。...RV 返回值:这是可选的,函数可以返回值,也可以不返回值。 参数:将函数所需的参数推入堆栈。 局部变量:函数使用的变量被推送到堆栈。

    4.6K41

    高性能的JavaScript--数据访问(1)

    JavaScript的直接量包括:字符串,数字,布尔值,对象,数组,函数,正则表达式,具有特殊意义的空值,以及未定义。 2.Variables 变量 开发人员使用var关键字创建用于存储数据值。...3.Array items 数组项 具有数字索引,存储一个JavaScript数组对象。 4.Object members 对象成员 具有字符串索引,存储一个JavaScript对象。...此激活对象作为函数执行期的一个可变对象,包含访问所有局部变量,命名参数,参数集合,和this的接口,然后,这个对象被推入作用域的前端。当作用域链被销毁时,激活对象也一同销毁。 ?  ...如果整个过程都没有找到那么被认为是undefined。正是这种搜索过程影响了性能。 2.标识符解析的性能 标示符识别不是免费的,事实上没有哪种电脑操作可以不产生性能开销。...此对象被插入到作用域链的前端,意味着现在函数的所有局部变量都被推入第二个作用域链对象中,所以访问代价更高了。

    83620

    Java程序员,这7个简单但棘手的JavaScript面试问题。你会吗?

    因此,当JavaScript执行 clothes.length = 0 的时候将删除所有元素。 clothes [0] 等于 undefined 的,因为 clothes 数组已被清空。...让我们仔细看一下分号 ; 出现在左大括号 {: 这个分号很容易被忽略,它创建了一个空语句。空语句是不做任何事情的空语句。...for() 在空语句上进行4次迭代(不执行任何操作),而忽略实际将项目推入数组的块:{number.push(i + 1);}。...一次进入块 {number.push(i + 1);},将 4 +1 推入数字数组。...当我第一次尝试解决它时,这也是我的答案! 执行此代码段有两个阶段。 Phase 1 for() 重复3次,在每次迭代过程中,都会创建一个新的函数 log() 来捕获变量 i。

    98420

    【重点】快速记忆JavaScript的数组api

    valueOf() 返回数组本身 栈方法 数组对象可以像栈一样,也就是一种限制插入和删除项的数据结构。栈是一种先入后出的结构,也就是最近添加的项先被删除。...数组提供了类似栈的数据项的插入(称为推入, push )和删除 (称为弹出,pop)方法的行为 push() pop() 列队方法 队列以先进先出(FIFO,First-In-First-Out...  断言函数接收 3 个参数:元素、索引和数组本身。其中元素是数组中当前搜索的元素,索引是当前 元素的索引,而数组就是正在搜索的数组。断言函数返回真值,表示是否匹配。...find() 返回第一个匹配的元素 findIndex() 返回第一个匹配元素的索引 迭代方法 some():对数组每一项都运行传入的函数,如果有一项函数返回 true ,则这个方法返回 true...filter():对数组每一项都运行传入的函数,函数返回 true 的项会组成数组之后返回。 map():对数组每一项都运行传入的函数,返回由每次函数调用的结果构成的数组。

    61920

    javascript正则表达式 教程_js正则表达式匹配字符串

    匹配前一项0次或1次,相当于{0,1} + 匹配前一项至少一次,相当于{1,} * 匹配前一项0次或更多次,相当于{0,} 我们接下来就利用这些语法进行一下重复操作,例如我们要匹配一段字符串中的11位数字...那么如果我们如何使他们不贪婪地重复呢?其实很简单,我们只需要在重复的语法后面加一个 ? 即可将重复变成非贪婪的,还是这个例子 let pattern = /\d{3,10}?...,列出了修饰符的种类和含义 字符 含义 i 执行不区分大小写的匹配 g 执行全局匹配,即找到所有匹配的项并返回,而不是找到第一个之后就停止 m 多行匹配模式 我们来逐个讲解它们各自的用途: 字符 i...该方法需要传入一个正则表达式作为参数,去确定需要根据什么去分割这串字符串,若匹配成功,最终返回一个数组,数组中的元素就是每个被分割的字符串;若匹配失败,也会返回一个数组,数组中只有一个元素,那就是这个字符串整体...一样,如果使用了修饰符g,则将所有匹配到的字符串都放在数组里一起返回,并且不会返回圆括号里匹配到的字符串,同时,该数组里不包含index和input两个属性。

    3.9K10

    7 个棘手的 JavaScript 面试题!

    因此,当 JavaScript 执行 clothes.length = 0 的时候将删除所有元素。 clothes 0 等于 undefined 的,因为 clothes 数组已被清空。...Answer 让我们仔细看一下分号 ;出现在左大括号 {: [krb8o46u8m.png] 这个分号很容易被忽略,它创建了一个空语句。空语句是不做任何事情的空语句。...for() 在空语句上进行 4 次迭代(不执行任何操作),而忽略实际将项目推入数组的块:{number.push(i + 1);}。...一次进入块 {number.push(i + 1);},将 4 +1 推入数字数组。...当我第一次尝试解决它时,这也是我的答案! 执行此代码段有两个阶段。 Phase 1 1、for() 重复3次,在每次迭代过程中,都会创建一个新的函数 log() 来捕获变量 i。

    67830

    JavaScript正则表达式的模式匹配教程,并且附带充足的实战代码

    匹配前一项0次或1次,相当于{0,1} 匹配前一项至少一次,相当于{1,} * 匹配前一项0次或更多次,相当于{0,} 我们接下来就利用这些语法进行一下重复操作,例如我们要匹配一段字符串中的11位数字...那么如果我们如何使他们不贪婪地重复呢?其实很简单,我们只需要在重复的语法后面加一个 ? 即可将重复变成非贪婪的,还是这个例子 let pattern = /\d{3,10}?...,列出了修饰符的种类和含义 字符 含义 i 执行不区分大小写的匹配 g 执行全局匹配,即找到所有匹配的项并返回,而不是找到第一个之后就停止 m 多行匹配模式 我们来逐个讲解它们各自的用途: 字符 i...该方法需要传入一个正则表达式作为参数,去确定需要根据什么去分割这串字符串,若匹配成功,最终返回一个数组,数组中的元素就是每个被分割的字符串;若匹配失败,也会返回一个数组,数组中只有一个元素,那就是这个字符串整体...)一样,如果使用了修饰符g,则将所有匹配到的字符串都放在数组里一起返回,并且不会返回圆括号里匹配到的字符串,同时,该数组里不包含index和input两个属性。

    1.8K20

    js数组去重五种方法

    先创建一个新的空数组用来存储新的去重的数组,然后遍历arr数组,在遍历过程中,分别判断newArr数组里面是不是有遍历到的arr中的元素,如果没有,直接添加进newArr中,如果已经有了(重复),那么不操作...arr中的值和新数组最后一位进行比较,如果相等,则pass掉,不相等的,push进来,因为数组重新排序了,重复的都挨在一起,那么这就保证了重复的这几个值只有第一个会被push进来,其余的都和新数组的被push...arr中的元素,里面一层控制的是第一层访问到的元素后面的元素,不断的从第0个开始,让第0个和他后面的元素比较,如果没有和这个元素相等的,则证明没有重复,推入到新数组中存储起来,如果有和这个元素相等的,则...从第1个开始,继续和它后面的元素进行比较,同上进行,一直循环到最后就是:不重复的都被推入新数组里面了,而重复的前面的元素被pass掉了,只留下了最后面的一个元素,这个时候也就不重复了,则推入新数组,过滤掉了所有重复的元素...arr数组的遍历,内层for循环控制的是新数组的遍历,从第0位开始,如果新数组中没有这个arr数组中遍历到的这个元素,那么状态变量bl的值还是true,那么自然进入到了if中把这个值推入到新数组中,如果有这个元素

    2.6K31

    JavaScript 正则表达式全面总结

    除此之外,正则表达式还有其他特殊语义的字符,这些字符不按照特殊含义进行匹配。 创建正则表达式 JavaScript 中的正则表达式用 RegExp 对象表示,有两种创建方式。 1....只能匹配 .。 重复 当一个模式需要被多次匹配的时候,正则表达式提供了表示重复的正则语法。...匹配前一项 0 次或 1 次,等价于 {0,1} + 匹配前一项 1 次或多次,等价于 {1,} * 匹配前一项 0 次或多次,等价于 {0,} 贪婪和非贪婪的重复 上面所有的重复都是“贪婪的”匹配,...// string 被匹配的原字符串。 例,下划线命名转驼峰命名。'...RegExp 的方法 exec() 如果没有找到任何属性,将返回 null,如果找到匹配返回一个数组,该数组第一个元素是相匹配的字符串,余下的元素是与圆括号内的子表达式相匹配的子串。

    1.3K40

    JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】

    ", "green") // 从数组开头推入两项 alert(count) // 2 splice() splice() 是 JavaScript 数组的一个原生方法,用于在数组中插入、删除或替换元素。...shift() shift()方法是JavaScript数组的另一个内置方法,它用于从数组的开头删除第一项,并返回被删除的项。...需要注意的是,indexOf()方法只会返回第一个匹配项的索引。如果要查找所有匹配项的索引,可以使用循环结合indexOf()方法进行遍历。...() replace() match() match() 方法是 JavaScript 字符串对象的一个方法,它用于执行正则表达式匹配操作,并返回一个包含匹配结果的数组。...search() search() 方法是 JavaScript 字符串对象的一个方法,它用于在字符串中查找指定正则表达式的第一个匹配项,并返回匹配项的索引值。

    61210

    长按键入!

    偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。 你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。...示例 1: 输入:name = "alex", typed = "aaleex" 输出:true 解释:'alex' 中的 'a' 和 'e' 被长按。...所以模拟同时遍历两个数组,进行对比就可以了。...+,j++ (继续向后对比) 不相同,返回false 看是不是第一位就不相同了,也就是j如果等于0,那么直接返回false 不是第一位不相同,就让j跨越重复项,移动到重复项之后的位置,再次比较name[...if (name[i] == typed[j]) { // j跨越重复项之后再次和name[i]匹配 j++; i++; // 相同则同时向后匹配

    6.7K20
    领券