JavaScript
林飞叶
we前端开发者
展开
-
哈夫曼树的js实现
前言哈夫曼树是数据压缩编码算法的基础,本文使用JavaScript语言实现了该算法。算法流程:输入待编码的字符串,算法去构造哈夫曼树,从而实现对字符串的二进制压缩编码。对于哈夫曼树理论的学习,可去参见其他文章。本文仅包含实现的代码以及注释。注释比较丰富,相信不难理解。算法实现树节点既然是树数据结构,就要有树节点,下面是树节点定义class Node { construc...原创 2020-02-25 20:09:25 · 1021 阅读 · 0 评论 -
leetcode274-h指数-medium-JavaScript版
// 274 medium H指数//// 给定一位研究者论文被引用次数的数组(被引用次数是非负整数)。编写一个方法,计算出研究者的 h指数。// h 指数的定义: “h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)至多有 h 篇论文分别被引用了至少 h 次。(其余的N - h篇论文每篇被引用次数不多于 h 次。)”/...原创 2019-08-16 21:05:00 · 113 阅读 · 0 评论 -
LeetCode189-easy-旋转数组-JavaScript版
// 189 easy 旋转数组//// 给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。//// 示例 1:// 输入: [1,2,3,4,5,6,7] 和 k = 3// 输出: [5,6,7,1,2,3,4]// 解释:// 向右旋转 1 步: [7,1,2,3,4,5,6]// 向右旋转 2 步: [6,7,1,2,3,4,5]// 向右旋转 3...原创 2019-08-21 22:03:08 · 120 阅读 · 0 评论 -
LeetCode1160-easy-拼写单词-JavaScript版
// 1160 easy 拼写单词//// 给你一份『词汇表』(字符串数组)words和一张『字母表』(字符串)chars。// 假如你可以用chars中的『字母』(字符)拼写出 words中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。//// 注意:每次拼写时,chars 中的每个字母都只能用一次。// 返回词汇表words中你掌握的所有单词的 长度之...原创 2019-08-21 21:41:11 · 162 阅读 · 0 评论 -
LeetCode566-easy-重塑矩阵-JavaScript版
// 566 easy 重塑矩阵//// 在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。// 给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。// 重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。//// 如果具有给定参数的reshape操作是可行且合理的,...原创 2019-08-21 21:25:31 · 106 阅读 · 0 评论 -
LeetCode394-字符串解码-medium-JavaScript版
var decodeString = function(s) { let stack = [] for(let i = 0; i < s.length; i++){ if (stack.length === 0 || s[i] !== ']'){ if (/[0-9]/.test(s[i])){ for...原创 2019-08-25 17:43:03 · 287 阅读 · 0 评论 -
leetcode415-easy-字符串相加
// easy 415 字符串相加//// 给定两个字符串形式的非负整数num1 和num2,计算它们的和。//// 注意://// num1 和num2的长度都小于 5100.// num1 和num2 都只包含数字0-9.// num1 和num2 都不包含任何前导零。// 你不能使用任何內建 BigInteger 库,也不能直接将输入的字符串转换为整数形式。...原创 2019-08-20 22:32:26 · 113 阅读 · 0 评论 -
LeetCode167-两数之和2-有序数组-JavaScript版
// 167 easy 两数之和-输入有序数组//// 给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。// 函数应该返回这两个下标值 index1 和 index2,其中 index1必须小于index2。//// 说明:// 返回的下标值(index1 和 index2)不是从零开始的。// 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用...原创 2019-08-20 21:03:06 · 115 阅读 · 0 评论 -
LeetCode-202-快乐数-JavaScript版
// 202 easy 快乐数// 编写一个算法来判断一个数是不是“快乐数”。// 一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,// 然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。//// 示例:// 输入: 19// 输出: true// 解释:// 12 + 92 =...原创 2019-08-11 20:47:52 · 208 阅读 · 0 评论 -
LeetCode171-Excel表序列号-JavaScript版
给定一个Excel表格中的列名称,返回其相应的列序号。例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1:输入: "A"输出: 1示例2:输入: "AB"输出: 28/** *...原创 2019-08-11 19:54:35 · 248 阅读 · 0 评论 -
leetcode728-自除数-JavaScript版
// 728 easy 自除数// 自除数是指可以被它包含的每一位数除尽的数。// 例如,128 是一个自除数,因为128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。// 还有,自除数不允许包含 0 。// 给定上边界和下边界数字,输出一个列表,列表的元素是边界(含边界)内所有的自除数。//// 示例 1:// 输入:// 上边界left = 1...原创 2019-08-11 18:19:30 · 152 阅读 · 0 评论 -
LeetCode223-矩形面积-JavaScript版
// 223 medium 矩形面积// 在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。// 每个矩形由其左下顶点和右上顶点坐标表示,如图所示。// 示例:// 输入: -3, 0, 3, 4, 0, -1, 9, 2// 输出: 45// 说明: 假设矩形面积不会超出 int 的范围。var computeArea = function(x1, y1, x2, ...原创 2019-08-11 11:21:21 · 260 阅读 · 0 评论 -
leetcode605-easy-种花问题-JavaScript版
// 605 easy 种花问题// 跟849题一样// 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。//// 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数n。能否在不打破种植规则的情况下种入n朵花?能则返回True,不能则返回False。//// 示...原创 2019-08-24 00:37:37 · 175 阅读 · 0 评论 -
leetcode169-求众数-JavaScript版
// easy 求众数 169// 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于⌊ n/2 ⌋的元素。//// 你可以假设数组是非空的,并且给定的数组总是存在众数。//// 示例1:// 输入: [3,2,3]// 输出: 3// 示例2:// 输入: [2,2,1,1,1,2,2]// 输出: 2/** * @param {nu...原创 2019-08-18 02:03:03 · 135 阅读 · 0 评论 -
leetcode830-easy-较大分组的位置
// 830 easy 较大分组的位置// 在一个由小写字母构成的字符串S中,包含由一些连续的相同字符所构成的分组。// 例如,在字符串 S = "abbxxxxzyy"中,就含有 "a", "bb", "xxxx", "z" 和 "yy" 这样的一些分组。// 我们称所有包含大于或等于三个连续字符的分组为较大分组。找到每一个较大分组的起始和终止位置。// 最终结果按照字典顺序输...原创 2019-08-22 20:50:21 · 94 阅读 · 0 评论 -
我的前端JS算法库
分享我的JavaScript算法库,这是我工作之余,刷LeetCode积累而成。目前有400多道题解,欢迎关注。地址:https://github.com/cunzaizhuyi/js-leetcode后面,我会重温这些题,添加多种解法,以及添加注释。希望对您有所帮助。...原创 2019-10-05 17:21:36 · 734 阅读 · 1 评论 -
5-medium-最长回文串-JavaScript版
// 5 medium 最长回文串//// 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设s 的最大长度为 1000。// 示例 1:// 输入: "babad"// 输出: "bab"// 注意: "aba" 也是一个有效答案。// 示例 2:// 输入: "cbbd"// 输出: "bb"/** * @param {string} s * @ret...原创 2019-09-15 16:46:24 · 213 阅读 · 0 评论 -
LeetCode781-medium-森林中的兔子-JavaScript版
// 781 medium 森林中的兔子//// 森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。我们将这些回答放在answers数组里。//// 返回森林中兔子的最少数量。//// 示例:// 输入: answers = [1, 1, 2]// 输出: 5// 解释:// 两只回答了 "1" 的兔子可能有相同的颜色,设为红...原创 2019-08-28 23:11:35 · 178 阅读 · 0 评论 -
LeetCode205-easy-同构字符串-JavaScript版
// 205 easy 同构字符串// 跟290单词规律一模一样////// 给定两个字符串s和t,判断它们是否是同构的。// 如果s中的字符可以被替换得到t,那么这两个字符串是同构的。// 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。//// 示例 1:// 输入: s = "egg", t ...原创 2019-08-27 08:44:59 · 301 阅读 · 0 评论 -
LeetCode136-easy-只出现一次的数字-JavaScript版
// 136 easy 只出现一次的数字// 跟540题一样的解法//// 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。//// 说明:// 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?//// 示例 1:// 输入: [2,2,1]// 输出: 1// 示例2:// 输入: [4,1,2...原创 2019-08-27 08:43:35 · 190 阅读 · 0 评论 -
LeetCode771-easy-宝石与石头-JavaScript版
// 771 easy 石头与宝石//// 给定字符串J代表石头中宝石的类型,和字符串S代表你拥有的石头。// S中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。// J中的字母不重复,J和S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。//// 示例 1:// 输入: J = "aA", S = "aAAbbb...原创 2019-08-27 08:41:46 · 113 阅读 · 0 评论 -
LeetCode31-easy-下一个排列-JavaScript版
// medium 31 下一个排列// 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。//// 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。//// 必须原地修改,只允许使用额外常数空间。//// 以下是一些例子,输入位于左侧列,其相应输出位于右侧列。// 1,2,3 → 1,3,2// 3,2,1 → 1,...原创 2019-08-27 08:40:22 · 110 阅读 · 0 评论 -
LeetCode1-两数之和-easy-JavaScript版
// easy 1 两数之和//// 给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。// 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。//// 示例:// 给定 nums = [2, 7, 11, 15], target = 9// 因为 nums[0] + nums[1...原创 2019-08-27 08:39:04 · 111 阅读 · 0 评论 -
LeetCode849-easy-到最近的人的最大距离-JavaScript版
// 849 easy 到最近的人的最近距离// 在一排座位(seats)中,1代表有人坐在座位上,0代表座位上是空的。// 至少有一个空座位,且至少有一人坐在座位上。// 亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。// 返回他到离他最近的人的最大距离。//// 示例 1:// 输入:[1,0,0,0,1,0,1]// 输出:2// 解释...原创 2019-08-22 22:16:49 · 120 阅读 · 0 评论 -
LeetCode289-medium-生命游戏-JavaScript版
// 289 medium 生命游戏//// 根据百度百科,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。// 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。// 每个细胞具有一个初始状态 live(1)即为活细胞, 或 dead(0)即为死细胞。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律://...原创 2019-08-18 15:06:28 · 185 阅读 · 0 评论 -
LeetCode1089-easy-复写0-JavaScript版
// 1089 easy 复写0// 给你一个长度固定的整数数组arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。// 注意:请不要在超过该数组长度的位置写入元素。// 要求:请对输入的数组就地进行上述修改,不要从函数返回任何东西。////// 示例 1:// 输入:[1,0,2,3,0,4,5,0]// 输出:null// 解释:调用函数后,输入的...原创 2019-08-18 10:44:47 · 149 阅读 · 0 评论 -
LeetCode1010-easy-总持续时间可被 60 整除的歌曲-JavaScript版
// 1010 easy//// 在歌曲列表中,第 i 首歌曲的持续时间为 time[i] 秒。// 返回其总持续时间(以秒为单位)可被 60 整除的歌曲对的数量。形式上,我们希望索引的数字i < j 且有(time[i] + time[j]) % 60 == 0。////// 示例 1:// 输入:[30,20,150,100,40]// 输出:3// 解释:这三...原创 2019-08-22 21:48:28 · 208 阅读 · 0 评论 -
leetcode-539-最小时间差-JavaScript版
// 539-medium-最小时间差// 给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并已分钟数表示。//// 示例 1:// 输入: ["23:59","00:00"]// 输出: 1//// 备注:// 列表中时间数在 2~20000 之间。// 每个时间取值在 00:00~23:59 之间。/** * @param {s...原创 2019-08-11 08:29:52 · 239 阅读 · 0 评论 -
LeetCode229-medium-求众数2-JavaScript版
// medium 229 求众数2//// 给定一个大小为n的数组,找出其中所有出现超过⌊ n/3 ⌋次的元素。// 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。//// 示例1:// 输入: [3,2,3]// 输出: [3]// 示例 2:// 输入: [1,1,1,3,3,2,2,2]// 输出: [1,2]/** * @pa...原创 2019-08-23 22:19:00 · 106 阅读 · 0 评论 -
Leetcode09-medium-长度最小的子数组-JavaScript版
// medium 209 长度最小子数组// 给定一个含有n个正整数的数组和一个正整数s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。// 如果不存在符合条件的连续子数组,返回 0。//// 示例:// 输入: s = 7, nums = [2,3,1,2,4,3]// 输出: 2// 解释: 子数组[4,3]是该条件下的长度最小的连续子数组。// 进阶...原创 2019-08-23 22:07:13 · 284 阅读 · 0 评论 -
LeetCode836-矩形重叠-JavaScript版
// 836 easy 矩形重叠//// 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。//// 如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。//// 给出两个矩形,判断它们是否重叠并返回结果。//// 示例 1:// 输入:rec1 = [0,0,2...原创 2019-08-13 23:40:40 · 128 阅读 · 0 评论 -
LeetCode80-medium-删除排序数组中的重复项2-JavaScript版
// 80 medium 删除排序数组中的重复项//// 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。// 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。//// 示例1:// 给定 nums = [1,1,1,2,2,3],// 函数应返回新长度 length = 5, 并且原数...原创 2019-08-18 20:08:37 · 105 阅读 · 0 评论 -
leetcode67-easy-二进制求和-JavaScript版
// 67 easy 二进制求和// 给定两个二进制字符串,返回他们的和(用二进制表示)。// 输入为非空字符串且只包含数字1和0。//// 示例1:// 输入: a = "11", b = "1"// 输出: "100"// 示例2:// 输入: a = "1010", b = "1011"// 输出: "10101"/** * @param {stri...原创 2019-08-13 19:35:18 · 224 阅读 · 0 评论 -
LeetCode349-两个数组的交集-JavaScript版
// 349 easy 两个数组的交集// 给定两个数组,编写一个函数来计算它们的交集。//// 示例 1:// 输入: nums1 = [1,2,2,1], nums2 = [2,2]// 输出: [2]// 示例 2:// 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]// 输出: [9,4]// 说明:// 输出结果中的每个元素一...原创 2019-08-08 22:55:50 · 101 阅读 · 0 评论 -
LeetCode922-按奇偶排序数组2-JavaScript版
// 922 easy 按奇偶排序数组 II// 给定一个非负整数数组A, A 中一半整数是奇数,一半整数是偶数。// 对数组进行排序,以便当A[i] 为奇数时,i也是奇数;当A[i]为偶数时, i 也是偶数。// 你可以返回任何满足上述条件的数组作为答案。//// 示例:// 输入:[4,2,5,7]// 输出:[4,5,2,7]// 解释:[4,7,2,5],[2...原创 2019-08-08 22:31:23 · 114 阅读 · 0 评论 -
LeetCode832-翻转图像-JavaScript版
// 832-easy-翻转图像// 给定一个二进制矩阵A,我们想先水平翻转图像,然后反转图像并返回结果。// 水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转[1, 1, 0]的结果是[0, 1, 1]。// 反转图片的意思是图片中的0全部被1替换,1全部被0替换。例如,反转[0, 1, 1]的结果是[1, 0, 0]。//// 示例 ...原创 2019-08-08 19:23:28 · 130 阅读 · 0 评论 -
leetCode283-移动0-JavaScript版
//283-easy-移动0// 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。//// 示例:// 输入: [0,1,0,3,12]// 输出: [1,3,12,0,0]// 说明:// 必须在原数组上操作,不能拷贝额外的数组。// 尽量减少操作次数。/** * @param {number[]} nums * @r...原创 2019-08-06 07:44:22 · 160 阅读 · 0 评论 -
LeetCode217-存在重复元素-JavaScript版
//217-easy-存在重复元素// 给定一个整数数组,判断是否存在重复元素。// 如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。//// 示例 1:// 输入: [1,2,3,1]// 输出: true// 示例 2:// 输入: [1,2,3,4]// 输出: false// 示例3:// 输入: [1,1...原创 2019-08-06 07:35:11 · 102 阅读 · 0 评论 -
LeetCode66-加1-JavaScript版
// 定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。// 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。// 你可以假设除了整数 0 之外,这个整数不会以零开头。//// 示例1:// 输入: [1,2,3]// 输出: [1,2,4]// 解释: 输入数组表示数字 123。// 示例2:// 输入: [4,3,2,1]// 输出: [4...原创 2019-08-06 07:10:48 · 86 阅读 · 0 评论 -
LeetCode867-转置矩阵-JavaScript版
// 867 --easy --转置矩阵// 给定一个矩阵A,返回A的转置矩阵。// 矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。//// 示例 1:// 输入:[[1,2,3],[4,5,6],[7,8,9]]// 输出:[[1,4,7],[2,5,8],[3,6,9]]// 示例 2:// 输入:[[1,2,3],[4,5,6]]// 输出:[...原创 2019-08-08 08:33:43 · 97 阅读 · 0 评论