05 2021 档案
摘要:题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度 示例 1: 输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长
阅读全文
摘要:题目:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 思路: 代码: 1 /** 2 * Definition fo
阅读全文
摘要:题目:给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回 思路: 代码: 1 /** 2 * @param {number} n 3 * @return {number[]} 4 */ 5 var countBits =
阅读全文
摘要:题目:给你一个长度为n的数组A。A[i]表示从i这个位置开始最多能往后跳多少格。求从1开始最少需要跳几次就能到达第n个格子 思路: 代码: 1 /** 2 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 3 * 4 * 最少需要跳跃几次能跳到末尾 5 * @param
阅读全文
摘要:题目:牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须得满足:最多只改变一个数,就可以使得这个连续的子序列是一个严格上升的子序列,牛牛想知道这个连续子序列最长的长度是多少 思路: 代码: 1 /** 2 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方
阅读全文
摘要:题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 思路: 代码: 1 function minNumberInRotateArray(rotateArray
阅读全文
摘要:题目:字符串旋转:给定两字符串A和B,如果能将A从中间某个位置分割为左右两部分字符串(都不为空串),并将左边的字符串移动到右边字符串后面组成新的字符串可以变为字符串B时返回true。例如:如果A=‘youzan’,B=‘zanyou’,A按‘you’‘zan’切割换位后得到‘zanyou’和B相同返
阅读全文
摘要:题目:给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)。 思路: 代码: 1 /** 2 * 最大乘积 3 * @param A int整型一维数组 4 * @return long长整型 5 */ 6 function s
阅读全文
摘要:题目:统计一个数字在升序数组中出现的次数 思路: 代码: 1 function GetNumberOfK(data, k) 2 { 3 // write code here 4 if(data.length 0) return 0; 5 let left = 0; 6 let right = dat
阅读全文
摘要:题目:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数) 思路: 代码: 1 function FirstNotRepeatingChar(str) 2 { 3 // write co
阅读全文
摘要:题目:给出一个升序排序的数组,将其转化为平衡二叉搜索树(BST) 思路: 代码: 1 /* 2 * function TreeNode(x) { 3 * this.val = x; 4 * this.left = null; 5 * this.right = null; 6 * } 7 */ 8 9
阅读全文
摘要:题目:一棵二叉树原本是搜索二叉树,但是其中有两个节点调换了位置,使得这棵二叉树不再是搜索二叉树,请按升序输出这两个错误节点的值。(每个节点的值各不相同) 思路: 代码: 1 /* 2 * function TreeNode(x) { 3 * this.val = x; 4 * this.left =
阅读全文
摘要:题目:给定数组arr,arr中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个aim,代表要找的钱数,求组成aim的最少货币数。如果无解,请返回-1。【要求】时间复杂度O(n×aim),空间复杂度On。 思路: 代码: 1 /** 2 * 最少货币数 3
阅读全文
摘要:题目:对于一个给定的字符串,我们需要在线性(也就是O(n))的时间里对它做一些变形。首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把着个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。比如"Hello World"变形后就变成了"wORLD hELLO"
阅读全文
摘要:题目:一棵二叉树原本是搜索二叉树,但是其中有两个节点调换了位置,使得这棵二叉树不再是搜索二叉树,请按升序输出这两个错误节点的值。(每个节点的值各不相同) 思路: 代码:
阅读全文
摘要:题目:给定彼此独立的两棵二叉树,判断 t1 树是否有与 t2 树拓扑结构完全相同的子树。设 t1 树的边集为 E1,t2 树的边集为 E2,若 E2 等于 E1 ,则表示 t1 树和t2 树的拓扑结构完全相同。 思路: 代码: 1 /* 2 * function TreeNode(x) { 3 *
阅读全文
摘要:题目:给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点 思路: 代码: 1 /* function TreeNode(x) { 2 this.val = x; 3 this.left = null; 4 this.right = null; 5 } */ 6 function KthNo
阅读全文
摘要:题目:给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数 思路: 代码: 1 /** 2 * 进制转换 3 * @param M int整型 给定整数 4 * @param N int整型 转换到的进制 5 * @return string字符串 6 */ 7 function
阅读全文
摘要:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 "" 示例 1: 输入:strs = ["flower","flow","flight"]输出:"fl"示例 2: 输入:strs = ["dog","racecar","car"]输出:""解释:输入不存在公共前缀。
阅读全文
摘要:给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入:grid = [ ["1","1","1","1","0"], ["
阅读全文
摘要:题目:给定一个整型数组 arr和一个整数 k(k>1)。已知 arr中只有 1 个数出现一次,其他的数都出现 k 次。请返回只出现了 1 次的数。思路: 代码: 1 /** 2 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 3 * 4 * 5 * @param arr
阅读全文
摘要:题目:给定一个整数数组nums,按升序排序,数组中的元素各不相同。nums数组在传递给search函数之前,会在预先未知的某个下标 t(0 <= t <= nums.length-1)上进行旋转,让数组变为[nums[t], nums[t+1], ..., nums[nums.length-1],
阅读全文
摘要:题目:输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树。平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 思路:后续遍历二叉树。
阅读全文
摘要:题目:从0,1,2,...,n这n+1个数中选择n个数,找出这n个数中缺失的那个数,要求O(n)尽可能小 思路: 代码: 1 /** 2 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 3 * 4 * 找缺失数字 5 * @param a int整型一维数组 给定的数字
阅读全文
摘要:题目:已知一个背包最多能容纳物体的体积为V。现有n个物品第i个物品的体积为vi 第i个物品的重量为wi。求当前背包最多能装多大重量的物品 说明:第一个物品的体积为1,重量为3,第二个物品的体积为10,重量为4。只取第二个物品可以达到最优方案,取物重量为4 思路: 代码: 1 /** 2 * 代码
阅读全文
摘要:题目:一个机器人在m×n大小的地图的左上角(起点)。机器人每次向下或向右移动。机器人要到达地图的右下角(终点)。可以有多少种不同的路径从起点走到终点? 备注:m和n小于等于100,并保证计算结果在int范围内 思路: 代码: 1 var memo = []; 2 for(let i = 0; i <
阅读全文
摘要:题目:给定一个无序数组arr, 其中元素可正、可负、可0。给定一个整数k,求arr所有子数组中累加和为k的最长子数组长度 思路:前缀和+哈希map 代码: 1 /** 2 * @param {number[]} nums 3 * @param {number} k 4 * @return {numb
阅读全文
摘要:题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。你可以假设数组是非空的,并且给定的数组总是存在多数元素。1<=数组长度<=50000 思路: 代码: 1
阅读全文
摘要:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 1.栈 遍历给定的字符串s。当我们遇到一个左括号时,我们会期望在后续
阅读全文
摘要:题目:现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。有如下规则: 1. A为1,J为11,Q为12,K为13,A不能视为142. 大、小王为 0,0可以看作任意牌3. 如果给出的五张牌能组成顺子(即这五张牌是连续的)就输出true,否则就输出false。例如:给出数据[6
阅读全文
摘要:题目:给定一个数组arr,返回子数组的最大累加和。例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12. 题目保证没有全为负数的数据 要求:时间复杂度为O(n),空间复杂度为O(1) 思路: 代码: 1 /*
阅读全文
摘要:题目:给定一个二叉树和一个值sum,判断是否有从根节点到叶子节点的节点值之和等于sum 的路径,例如:给出如下的二叉树,sum=22 返回true,因为存在一条路径5→4→11→2的节点值之和为 22 思路:回溯算法是深度优先搜索的一种 代码: 1 /* 2 * function TreeNode(
阅读全文
摘要:题目:给出两个有序的整数数组 和 ,请将数组 合并到数组 中,变成一个有序的数组注意:可以假设 数组有足够的空间存放 数组的元素, 和 中初始的元素数目分别为 和 思路: 代码: 1 /** 2 * 3 * @param A int整型一维数组 4 * @param B int整型一维数组 5 *
阅读全文
摘要:题目:删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次例如:给出的链表为1\to1\to21→1→2,返回1 \to 21→2.给出的链表为1\to1\to 2 \to 3 \to 31→1→2→3→3,返回1\to 2 \to 31→2→3. 提示: 链表中节点数
阅读全文
摘要:题目:给定一个无序单链表,实现单链表的排序(按升序排序) 思路: 代码: 1 /* 2 * function ListNode(x){ 3 * this.val = x; 4 * this.next = null; 5 * } 6 */ 7 8 /** 9 * 10 * @param head Li
阅读全文
摘要:题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型 思路: 栈1:用于入队列存储 栈2:出队列时将栈1的数据依次出栈,并入栈到栈2中。栈2出栈即栈1的底部数据即队列要出的数据。 注意:栈2为空才能补充栈1的数据,否则会打乱当前的顺序。 代码: 1 var sta
阅读全文
摘要:题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的 提示: 两个链表的节点数目范围是 [0, 50] -100 <= Node.val <= 100 l1 和 l2 均按 非递减顺序 排列 思路: dummy节点:(1)作为新链表的头节点 (2)解决
阅读全文
摘要:题目:请实现无重复数字的升序数组的二分查找。给定一个 元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1 方法一:暴力解法 1 /** 2 * @param {number[]} nums 3 *
阅读全文
摘要:题目:假定你知道某只股票每一天价格的变动。你最多可以同时持有一只股票。但你可以无限次的交易(买进和卖出均无手续费)。请设计一个函数,计算你所能获得的最大收益。 思路: 代码: 1.常规算法:找到曲线的最大值peak和最小值valley 1 /** 2 * @param {number[]} pric
阅读全文
摘要:题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果) 思路:找规律:跳三级台阶等于跳两级台阶的跳法+跳一级台阶的跳法。跳四级台阶等于跳三级台阶的跳法+跳二级台阶的跳法。明显也符合斐波那契数列的规律f(n) = f(n-1) +f(
阅读全文
摘要:题目:求出两个数的最大公约数,如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数 思路: 代码: 1. 辗转相除法(欧几里德算法) 1 /** 2 * 代码中的类名、方法名、参数名
阅读全文
摘要:题目:一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1 ……AN-1 )变换为(AN-M …… AN-1 A0 A1 ……AN-M-1 )(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数
阅读全文
摘要:题目:山峰元素是指其值大于或等于左右相邻值的元素。给定一个输入数组nums,任意两个相邻元素值不相等,数组可能包含多个山峰。找到索引最大的那个山峰元素并返回其索引。假设 nums[-1] = nums[n] = -∞ 思路: 代码: 1 /** 2 * 寻找最后的山峰 3 * @param a in
阅读全文
摘要:如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。 示例 1: 输入: s = "A man, a pla
阅读全文
摘要:描述:用 JavaScript 实现斐波那契数列函数,返回第n个斐波那契数。 f(1) = 1, f(2) = 1 等 递归:从最大数开始,不断拆解成小的数计算 方法一:暴力递归 1 /** 2 * @param {number} n 3 * @return {number} 4 */ 5 var
阅读全文
摘要:题目:给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素 提示: m == matrix.lengthn == matrix[i].length1 <= m, n <= 10-100 <= matrix[i][j] <= 100 代码: 1 /** 2 * 3 * @par
阅读全文
摘要:题目:给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。 示例 1: 输入: Tree 1 Tree 2 1
阅读全文
摘要:题目:给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 注意:两结点之间的路径长度是以
阅读全文
摘要:题目:两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231 输入: x = 1, y = 4 输出: 2 解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑ 上面的箭头指出了对应二进制位不同的
阅读全文
摘要:题目:给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。
阅读全文
摘要:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]示例 2: 输入: nums = [0]输出: [0] 提
阅读全文
摘要:给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head = [1,2,2,1] 输出:true示例 2: 输入:head = [1,2] 输出:false 提示: 链表中节点数目在范围[1, 105] 内 0
阅读全文
摘要:给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2: 输入:root = [2,1,3] 输出:[2,3,1] 示例 3: 输入:root = [] 输出:[] 提示:
阅读全文
摘要:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head = [1,2] 输出:[2,1] 示例 3: 输入:head = [] 输出:[] 思路1:迭代 以链表的头部节点为基准
阅读全文
摘要:题目:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题 思路: 代码: 1 /** 2 * @param
阅读全文
摘要:题目:编写一个程序,找到两个单链表相交的起始节点。 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。 思路: 如果 A、B 两链表相交,则 A 、B 自相交点往后的
阅读全文
摘要:题目:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 提示:pop、top 和 getMin 操作
阅读全文
摘要:给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的
阅读全文
摘要:题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 思路:异或运算符在两个二进制位不同时返回1,相同时返回0 代码: 1 /** 2 * @param {number[]}
阅读全文
摘要:题目:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0
阅读全文
摘要:给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。 思路: 深度优先遍历DFS+ 分治
阅读全文
摘要:给你一个二叉树的根节点 root , 检查它是否轴对称。 示例一: 输入:root = [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root = [1,2,2,null,3,null,3] 输出:false 提示: 树中节点数目在范围 [1, 1000] 内 -100 <= N
阅读全文
摘要:给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 提示: 树中节点数目在范围 [0, 100] 内 -
阅读全文
摘要:请编写一个函数,该函数将一个数组(第一个参数)拆分成若干长度为 size(第二个参数)的子数组,并将它们作为二维数组返回 1 function chunkArrayInGroups(arr, size) { 2 let result=[]; 3 for(let i=0;i<arr.length;i+
阅读全文
摘要:如果数组里的第一个字符串包含了第二个字符串中的所有字母,则返回 true。例如,["hello", "Hello"] 应该返回 true。因为在忽略大小写的情况下,第一个字符串包含了第二个字符串里出现的所有字母。["hello", "hey"] 应该返回 false。因为 hello 并不包含字符
阅读全文
摘要:题目:数组(第一个参数)在排序后,将一个值(第二个参数)插入该数组,并使数组保持有序。返回这个新插入元素的最小索引值。 返回值应为一个数字。例如,getIndexToIns([1,2,3,4], 1.5) 应该返回 1 因为1.5 大于 1(索引为 0)且小于 2(索引为 1)。同样地,getInd
阅读全文
摘要:从数组中移除所有假值(falsy values)。JavaScript 中的假值有 false、null、0、""、undefined、NaN。提示:可以考虑将每个值都转换为布尔值(boolean) 1 function bouncer(arr) { 2 let res =[]; 3 for(let
阅读全文
摘要:本挑战的输入参数为两个数组和一个索引值。将第一个数组中的所有元素依次复制到第二个数组中。请注意,你需要从第二个数组索引值为 n 的地方开始插入。最后,请返回插入元素后的数组。 作为输入参数的两个数组在函数执行前后应保持不变。 1 function frankenSplice(arr1, arr2,
阅读全文
摘要:请将传入的字符串中,每个单词的第一个字母变成大写并返回。 注意除首字母外,其余的字符都应是小写的。在这个挑战中,我们还需要将诸如 the 和 of 之类的连接词大写 1 function titleCase(str) { 2 let shouldCap = true; 3 let res=''; 4
阅读全文
摘要:检查一个值是否是基本类型中的布尔值(boolean)类型。 函数应返回 true 或者 false。基本类型中的布尔值为 true 或者 false。 1 function booWho(bool) { 2 return typeof bool 'boolean'; 3 } 4 booWho(nul
阅读全文
摘要:请写一个函数来检查数组(第一个参数 arr)中的元素,并返回数组中第一个通过校验测试的元素。 其中,“通过校验测试”指的是对于数组中的一个元素 x,若 func(x) 返回的结果为 true,则校验测试通过。 如果没有元素通过测试,请返回 undefined 1 function findEleme
阅读全文
摘要:如果传入的字符串(第一个参数)的长度大于传入的值(第二个参数),请在这个位置截断它, 并在后面加上 ...,然后返回结果 1 function truncateString(str, num) { 2 if(str.length>num){ 3 return str.slice(0, num)+".
阅读全文
摘要:将一个给定的字符串 str(第一个参数)重复输出 num(第二个参数)次。 如果 num 不是正数,返回空字符串。 1. repeat() 构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的字符串的副本 1 function repeatStringNumTimes(str, num) {
阅读全文
摘要:检查字符串(第一个参数 str)是否以给定的目标字符串(第二个参数 target)结束。这个挑战 可以 用 ES2015 引入的 .endsWith() 方法来解决。但在这个挑战中,请使用 JavaScript 的字符串子串方法。 1 function confirmEnding(str, targ
阅读全文
摘要:请返回一个数组,该数组由参数中每个子数组中的最大数字组成。 为简单起见,给出的数组总会包含 4 个子数组。别忘了,你可以通过 for 循环遍历一个数组,并用 arr[i] 的写法来访问数组中的元素。 1 function largestOfFour(arr) { 2 return arr.map(s
阅读全文
摘要:1.定义:扩展运算符(spread)是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列 2. 数组的扩展 3. 对象的扩展 4. 算法题:找出字符串中的最长单词,通过返回给出的句子中,最长单词的长度。函数的返回值应是一个数字 1 function findLong
阅读全文
摘要:Linux的目录结构为树状结构,最顶级的目录为根目录 /。其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们 绝对路径:路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录 相对路径:路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /u
阅读全文
摘要:1. TypeScript 是一个开源的、 渐进式包含类型的 JavaScript 超集,由微软创建并维护。 2. 创建它的目的是让开发者增强 JavaScript 的能力并使应用的规模扩展变得更容易。 3. 它的主要功能之一是为 JavaScript 变量提供类型支持。在 JavaScript 中
阅读全文
摘要:1.定义:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring) 2.用途: (1)用来一次初始化多个变量 1 let [a, b, c] = [1, 2, 3]; (2)用来进行值的互换,而不需要创建临时变量 1 [x,y]=[y,x] 2 //
阅读全文
摘要:1. 定义:用于访问和调用一个对象的父对象上的函数 1 class B extends A { 2 constructor(){ 3 super() 4 } 5 }
阅读全文
摘要:题目:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。 示例 1: 输入:x = 121 输出:true 示例 2: 输入:x = -121 输出:fals
阅读全文
摘要:给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 示例 1: 输入:x = 123 输出:321 示例 2: 输入:x =
阅读全文
摘要:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15],
阅读全文
摘要:1.概述 (1)JavaScript 是浏览器的内置脚本语言。也就是说,浏览器内置了 JavaScript 引擎,并且提供各种接口,让 JavaScript 脚本可以控制浏览器的各种功能。一旦网页内嵌了 JavaScript 脚本,浏览器加载网页,就会去执行脚本,从而达到操作浏览器的目的,实现网页的
阅读全文
摘要:1.表单事件的种类 (1)input事件: input事件当<input>、<select>、<textarea>的值发生变化时触发。对于复选框(<input type=checkbox>)或单选框(<input type=radio>),用户改变选项时,也会触发这个事件。另外,对于打开conten
阅读全文
摘要:1.概述 (1)事件发生以后,会产生一个事件对象,作为参数传给监听函数。浏览器原生提供一个Event对象,所有的事件都是这个对象的实例,或者说继承了Event.prototype对象 (2)Event对象本身就是一个构造函数,可以用来生成新的实例 1 event = new Event(type,
阅读全文
摘要:1. 由于事件会在冒泡阶段向上传播到父节点,因此可以把子节点的监听函数定义在父节点上,由父节点的监听函数统一处理多个子元素的事件。这种方法叫做事件的代理(delegation) 1 var ul = document.querySelector('ul'); 2 3 ul.addEventListe
阅读全文
摘要:1. 一个事件发生后,会在子元素和父元素之间传播(propagation)。这种传播分成三个阶段。 第一阶段:从window对象传导到目标节点(上层传到底层),称为“捕获阶段”(capture phase) 第二阶段:在目标节点上触发,称为“目标阶段”(target phase) 第三阶段:从目标节
阅读全文
摘要:1. 监听函数定义:通过监听函数(listener)对事件做出反应。事件发生后,浏览器监听到了这个事件,就会执行对应的监听函数。这是事件驱动编程模式(event-driven)的主要编程方式 2. JS有三种方法:可以为事件绑定监听函数 (1)HTML的on-属性: HTML 语言允许在元素的属性中
阅读全文
摘要:1. DOM 的事件操作(监听和触发),都定义在EventTarget接口。所有节点对象都部署了这个接口,其他一些需要事件通信的浏览器内置对象(比如,XMLHttpRequest、AudioNode、AudioContext)也部署了这个接口。 该接口主要提供三个实例方法。 addEventList
阅读全文
摘要:1. 定义: @keyframes animationname {keyframes-selector {css-styles;}} 2. 实例: 1 /* 动画代码 */ 2 @keyframes example { 3 from {background-color: red;} 4 to {ba
阅读全文
摘要:productionTip设置为 false ,可以阻止 vue 在启动时生成生产提示开发环境下,Vue 会提供很多警告来帮你对付常见的错误与陷阱。而在生产环境下,这些警告语句却没有用,反而会增加应用的体积。此外,有些警告检查还有一些小的运行时开销,这在生产环境模式下是可以避免的
阅读全文
摘要:1. 一个webpack的api,通过执行require.context函数获取一个特定的上下文,主要用来实现自动化导入模块,在前端工程中,如果遇到从一个文件夹引入很多模块的情况,可以使用这个api,它会遍历文件夹中的指定文件,然后自动导入,使得不需要每次显式的调用import导入模块 2. req
阅读全文
摘要:1.定义:当你在开发环境修改代码后,不用刷新整个页面即可看到修改后的效果
阅读全文
摘要:1. Array.prototype.shift()方法 (1)定义:用于删除数组的第一个元素,并返回该元素。注意,该方法会改变原数组 1 var a = ['a', 'b', 'c']; 2 3 a.shift() // 'a' 4 a // ['b', 'c'] 上面代码中,使用shift()方
阅读全文
摘要:1. 定义:接受一个字符串作为参数,返回一个布尔值,表示该实例对象自身是否具有该属性 1 var obj = { 2 p: 123 3 }; 4 5 obj.hasOwnProperty('p') // true 6 obj.hasOwnProperty('toString') // false 上
阅读全文
摘要:1. setTimeout()函数: (1)用来指定某个函数或某段代码,在多少毫秒之后执行。它返回一个整数,表示定时器的编号,以后可以用来取消这个定时器 (2)接受两个参数,第一个参数func|code是将要推迟执行的函数名或者一段代码,第二个参数delay是推迟执行的毫秒数。 var timerI
阅读全文
摘要:1. Array.prototype.push()方法 (1)定义:用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组 (2)代码使用push方法,往数组中添加了四个成员 1 var arr = []; 2 console.log(arr.push(1));
阅读全文
摘要:1. 定义:用于删除原数组的一部分成员,并可以在删除的位置添加新的数组成员,返回值是被删除的元素。注意,该方法会改变原数组 2. 第一个参数是删除的起始位置(从0开始),第二个参数是被删除的元素个数。如果后面还有更多的参数,则表示这些就是要被插入数组的新元素 arr.splice(start, co
阅读全文
摘要:1. Array.prototype.slice()方法 (1)定义:用于提取目标数组的一部分,返回一个新数组,原数组不变 (2)第一个参数为起始位置(从0开始,会包括在返回的新数组之中),第二个参数为终止位置(但该位置的元素本身不包括在内)。如果省略第二个参数,则一直返回到原数组的最后一个成员 a
阅读全文
摘要:1. 对象的遍历 1 let obj = {'0' : 'a', '1' : 'b', '2' : 'c' }; Object.keys()(输入object,返回array) 1 Object.keys(obj).forEach( key =>{ 2 console.log(key, obj[ke
阅读全文
摘要:1. 函数柯里化:把接受多个参数的函数转换成接受一个单一参数的函数 2. 1 //柯里化 2 var foo = function (x) { 3 return function (y) { 4 return x+y; 5 } 6 } 7 foo(3)(4) //7 8 9 //普通方法 10 va
阅读全文
摘要:都是链表 作用域链记录对象在上下文中的可见性,原型链记录对象包含哪些功能函数 作用域是对于变量而言,原型链是对于对象的属性 作用域链顶层是window,原型链顶层是Object
阅读全文
摘要:JavaScript 没有提供传统面向对象语言中的类式继承,而是通过原型委托的方式来实现对象与对象之间的继承
阅读全文
摘要:1. 定义 Function.prototype.call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数 Function.prototype.apply() 方法调用一个具有给定this值的函数,以及以一个数组(或类数组对象)的形式提供的参数 Function.pr
阅读全文