javascript
进击的桐人
写些心得,不时回看
展开
-
笔试题:用reduce实现map——JavaScript
首先,先看看map和reduce的完整用法:arr.reduce((previousValue, currentValue, currentIndex, array) => {}, initialValue?)reduce 接收两个参数,第一个参数为函数,指定了每次迭代调用的函数,函数的返回值为下一次迭代的 previousValue;第二个参数为初始值,是可选的。若不指定初...原创 2020-03-23 13:58:50 · 2284 阅读 · 0 评论 -
LeetCode-1382-将二叉搜索树变平衡-JavaScript
题目给你一棵二叉搜索树,请你返回一棵 平衡后 的二叉搜索树,新生成的树应该与原来的树有着相同的节点值。如果一棵二叉搜索树中,每个节点的两棵子树高度差不超过 1 ,我们就称这棵二叉搜索树是 平衡的 。如果有多种构造方法,请你返回任意一种。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/balance-a-binary-search-tr...原创 2020-03-23 11:43:18 · 370 阅读 · 0 评论 -
leetcode-1381-设计一个支持增量操作的栈-javascript
leetcode题目出处题目请你设计一个支持下述操作的栈。实现自定义栈类 CustomStack :CustomStack(int maxSize):用 maxSize 初始化对象,maxSize 是栈中最多能容纳的元素数量,栈在增长到 maxSize 之后则不支持 push 操作。void push(int x):如果栈还未增长到 maxSize ,就将 x 添加到栈顶。int po...原创 2020-03-19 12:56:49 · 249 阅读 · 0 评论 -
Leetcode-1380-矩阵中的幸运数字-JavaScript
题目给你一个 m * n 的矩阵,矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。幸运数是指矩阵中满足同时下列两个条件的元素:在同一行的所有元素中最小在同一列的所有元素中最大示例示例 1:输入:matrix = [[3,7,8],[9,11,13],[15,16,17]]输出:[15]解释:15 是唯一的幸运数,因为它是其所在行中的最小值,也是所在列中的最大...原创 2020-03-19 11:32:50 · 364 阅读 · 0 评论 -
LeetCode-836-矩形重叠-JavaScript
题目836. 矩形重叠矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形,判断它们是否重叠并返回结果。示例 1:输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输出:true...原创 2020-03-18 14:42:00 · 239 阅读 · 0 评论 -
LeetCode-1160-拼写单词-JavaScript
题目出处题目给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写时,chars 中的每个字母都只能用一次。返回词汇表 words 中你掌握的所有单词的 长度之和。示例 1:输入:words = ["cat","b...原创 2020-03-18 12:22:11 · 167 阅读 · 0 评论 -
2020/3/8 校招笔试题
题一某一工人生产手机,假设第一天量产1台,接下来2天(即第二天、第三天)每天量产2台,接下来3天每天量产3台……以此类推,请编程计算处第n天总共可以量产的手机数量。思路用数组保存 1 到 n 天每天量产的数量,即 [1, 2, 2, 3, 3, 3, ...]取前n项求和即可。function solution(n) { const arr = []; let i = 1; ...原创 2020-03-08 21:34:00 · 523 阅读 · 0 评论 -
实现call、apply、bind
一、实现myCall首先,call函数是将this绑定到传入的第一个参数上,其余参数作为调用函数的参数。func.call(thisArg, arg1, arg2, ...);那么,分为三步:将 this 赋值给 thisArg ,作为它的某个函数属性 调用这个函数属性 删除这个属性方法一:采用数组扩展符Function.prototype.myCall = f...原创 2020-03-04 23:32:32 · 179 阅读 · 0 评论 -
leetcode-面试试题10.01.合并排序的数组
题目给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化 A 和 B 的元素数量分别为 m 和 n。示例:输入:A = [1,2,3,0,0,0], m = 3B = [2,5,6], n = 3输出: [1,2,2,3,5,6]来源:力扣(LeetCode)链接:https://leetcod...原创 2020-03-04 00:01:31 · 247 阅读 · 0 评论 -
868. 二进制间距(JavaScript)
给定一个正整数 N,找到并返回 N 的二进制表示中两个连续的 1 之间的最长距离。 如果没有两个连续的 1,返回 0 。示例 1:输入:22输出:2解释:22 的二进制是 0b10110 。在 22 的二进制表示中,有三个 1,组成两对连续的 1 。第一对连续的 1 中,两个 1 之间的距离为 2 。第二对连续的 1 中,两个 1 之间的距离为 1 。答案取两个距离之中...原创 2018-07-30 14:15:13 · 248 阅读 · 0 评论 -
JavaScript 中按位的操作(与、或、异或、按位取反、左移、右移)
按位与 (&):a = 2, b = 3a & b = 2解释: 2的二进制为'10',3的二进制为'11',按位与:都为1时得1,出现0时得0,因此结果是'10',即2按位或(|):a = 6, b = 5a | b = 7解释:6='110',5='101',按位或,每一位二进制上进行或操作,得到'111',即7按位异或(^):a = ...原创 2018-07-27 12:16:16 · 6323 阅读 · 1 评论 -
371. 两整数之和(JavaScript)
不使用运算符 + 和-,计算两整数a 、b之和。示例:若 a = 1 ,b = 2,返回 3。思路:不使用 + 和 -, 那就要站在二进制的角度来考虑使用与或非、异或等相关操作。详细按位操作请看另一篇文章:JavaScript按位相关操作。/** * @param {number} a * @param {number} b * @return {number} *...原创 2018-07-27 15:00:44 · 442 阅读 · 0 评论 -
123. 买卖股票的最佳时机 III(JavaScript)
给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易...原创 2018-08-09 11:23:47 · 417 阅读 · 0 评论 -
188. 买卖股票的最佳时机 IV(JavaScript)
给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [2,4,1], k = 2输出: 2解释: 在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能...原创 2018-08-09 12:22:22 · 466 阅读 · 0 评论 -
705. 设计哈希集合 (JavaScript)
不使用任何内建的哈希表库设计一个哈希集合具体地说,你的设计应该包含以下的功能add(value):向哈希集合中插入一个值。 contains(value) :返回哈希集合中是否存在这个值。 remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。示例:MyHashSet hashSet = new MyHashSet();hashSet.a...原创 2018-07-28 08:34:03 · 896 阅读 · 0 评论 -
812. 最大三角形面积(JavaScript)
给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。示例:输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]输出: 2解释: 这五个点如下图所示。组成的橙色三角形是最大的,面积为2。注意:3 <= points.length <= 50. 不存在重复的点。 -50 <= points...原创 2018-08-06 13:01:07 · 390 阅读 · 0 评论 -
872. 叶子相似的树(JavaScript)
请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。举个例子,如上图所示,给定一颗叶值序列为 (6, 7, 4, 9, 8) 的树。如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。 提示:给定的两颗树可能会...原创 2018-08-06 16:22:50 · 302 阅读 · 0 评论 -
485. 最大连续1的个数(JavaScript)
给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。 输入数组的长度是正整数,且不超过 10,000。思路:时间按复杂度:O(n)设置一个计数变量 count,来计数连续出现的 1。从头到尾遍历,若为 1,...原创 2018-08-06 16:30:48 · 427 阅读 · 0 评论 -
100. 相同的树(JavaScript)
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 ...原创 2018-08-06 16:40:16 · 811 阅读 · 0 评论 -
232. 用栈实现队列(JavaScript)
使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // 返回 1qu...原创 2018-08-06 17:12:24 · 735 阅读 · 0 评论 -
235. 二叉搜索树的最近公共祖先(JavaScript)
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5] _______6__...原创 2018-08-06 23:19:32 · 542 阅读 · 0 评论 -
606. 根据二叉树创建字符串(JavaScript)
你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 "()" 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。示例 1:输入: 二叉树: [1,2,3,4] 1 / \ 2 3 / 4 输出: "1(2(4))(3)"解释: 原本将...原创 2018-08-06 23:34:49 · 260 阅读 · 0 评论 -
94. 二叉树的中序遍历(JavaScript)(迭代法与递归法)
给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?解法一:递归法递归法不多说,按照左子树、根节点、右子树的顺序进行遍历。递归法也有两种写法,一种是递归函数本身,一种是在闭包中递归(即在函数中创建新函数,递归这个新函数...原创 2018-08-07 10:45:07 · 976 阅读 · 0 评论 -
144. 二叉树的前序遍历(JavaScript)
给定一个二叉树,返回它的 前序 遍历。 示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?解法一:递归法递归法很简单,按照根节点、左子树、右子树的顺序。JavaScript中数组的连接使用concat,且此函数并不改变数组本身。/** * ...原创 2018-08-07 11:02:40 · 1718 阅读 · 0 评论 -
78. 子集(JavaScript)
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]思路:本题有规律可循。设置初始二维数组:[ [ ] ] 。依次把每个数加入到数组中...原创 2018-08-07 14:40:59 · 1096 阅读 · 0 评论 -
JavaScript 判断二维数组是否包含某一维数组
输入:二维数组array、一维数组element功能:判断array是否包含element输出:true/false本想着用Array.indexOf,但是数组在内存中是以引用的方式存在的,想要比较两个数组是否相等,是不可以使用 a === b 来判断的。因为数组 a 和数组 b 本身的值都是数组的地址。因此必须遍历array中的每个元素,来判断是否有元素与element相等。 ...原创 2018-08-07 20:01:05 · 11185 阅读 · 0 评论 -
90. 子集 II(JavaScript)
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[ [2], [1], [1,2,2], [2,2], [1,2], []]思路:这道题的前身:78.子集,输入的数组不包含重复元素。而这道题包含重复元素,如果继续按照78那道题的解法,解集中必然会包含重...原创 2018-08-07 20:10:32 · 239 阅读 · 0 评论 -
888. 两句话中的不常见单词(JavaScript)
给定两个句子 A 和 B 。 (句子是一串由空格分隔的单词。每个单词仅由小写字母组成。)如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的。返回所有不常用单词的列表。您可以按任何顺序返回列表。示例 1:输入:A = "this apple is sweet", B = "this apple is sour"输出:["sweet","...原创 2018-08-15 18:35:27 · 330 阅读 · 0 评论 -
788. 旋转数字(JavaScript)
我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数。要求每位数字都要被旋转。如果一个数的每位数字被旋转以后仍然还是一个数字, 则这个数是有效的。0, 1, 和 8 被旋转后仍然是它们自己;2 和 5 可以互相旋转成对方;6 和 9 同理,除了这些以外其他的数字旋转以后都不再是有效的数字。现在我们有一个正整数 N, 计算从 1...原创 2018-08-15 19:13:19 · 1027 阅读 · 4 评论 -
202. 快乐数(JavaScript)
编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例: 输入: 19输出: true解释: 12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + ...原创 2018-08-15 19:38:16 · 1209 阅读 · 0 评论 -
263. 丑数(JavaScript)
编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数 2, 3, 5 的正整数。示例 1:输入: 6输出: true解释: 6 = 2 × 3示例 2:输入: 8输出: true解释: 8 = 2 × 2 × 2示例 3:输入: 14输出: false 解释: 14 不是丑数,因为它包含了另外一个质因数 7。说明:1 是丑数。 输入不会...原创 2018-08-15 19:54:15 · 361 阅读 · 0 评论 -
264. 丑数 II(JavaScript)
编写一个程序,找出第 n 个丑数。丑数就是只包含质因数 2, 3, 5 的正整数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明: 1 是丑数。 n 不超过1690。思路:这道题是丑数Ⅱ,前一道题请看丑数 Ⅰ.这里第一反应是利用丑数Ⅰ的函数,对于每个数都判断是否为丑数。但这...原创 2018-08-15 20:04:23 · 342 阅读 · 0 评论 -
22. 括号生成(JavaScript)
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]思路:此题已有官方的三种标准答案,不在啰嗦。请看括号生成解决方法。这里附上JavaScript版本。/** * @par...原创 2018-08-08 17:21:37 · 1474 阅读 · 0 评论 -
887. 三维形体投影面积(JavaScript)
在 N * N 的网格中,我们放置了一些与 x,y,z 三轴对齐的 1 * 1 * 1 立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。现在,我们查看这些立方体在 xy、yz 和 zx 平面上的投影。投影就像影子,将三维形体映射到一个二维平面上。在这里,从顶部、前面和侧面看立方体时,我们会看到“影子”。返回所有三个投影的总面积。...原创 2018-08-13 16:41:28 · 390 阅读 · 0 评论 -
349. 两个数组的交集(JavaScript)
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。思路:结果中的元素唯一,考虑用集合:s...原创 2018-08-13 16:51:03 · 382 阅读 · 0 评论 -
313. 超级丑数(JavaScript)
编写一段程序来查找第 n 个超级丑数。超级丑数是指其所有质因数都是长度为 k 的质数列表 primes 中的正整数。示例:输入: n = 12, primes = [2,7,13,19]输出: 32 解释: 给定长度为 4 的质数列表 primes = [2,7,13,19],前 12 个超级丑数序列为:[1,2,4,7,8,13,14,16,19,26,28,32] 。...原创 2018-08-16 15:33:41 · 273 阅读 · 0 评论 -
303. 区域和检索 - 数组不可变(JavaScript)
给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。示例:给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> -3说明:你可以假设数...原创 2018-08-16 19:21:14 · 750 阅读 · 0 评论 -
304. 二维区域和检索 - 矩阵不可变(JavaScript)
给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2)。上图子矩阵左上角 (row1, col1) = (2, 1) ,右下角(row2, col2) = (4, 3),该子矩形内元素的总和为 8。示例:给定 matrix = [ [3, 0, 1, 4, 2], [5, 6, 3, 2, 1],...原创 2018-08-16 20:33:10 · 498 阅读 · 0 评论 -
438. 找到字符串中所有字母异位词(JavaScript)
给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。 不考虑答案输出的顺序。示例 1:输入:s: "cbaebabacd" p: "abc"输出:[0, 6]解释:起始索引等于 0 的子...原创 2018-08-19 16:39:41 · 824 阅读 · 0 评论 -
551. 学生出勤纪录 I(JavaScript)
给定一个字符串来代表一个学生的出勤纪录,这个纪录仅包含以下三个字符:'A' : Absent,缺勤 'L' : Late,迟到 'P' : Present,到场如果一个学生的出勤纪录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),那么这个学生会被奖赏。你需要根据这个学生的出勤纪录判断他是否会被奖赏。示例 1:输入: "PPALLP"输出: True示例...原创 2018-08-26 14:29:14 · 362 阅读 · 0 评论