![](https://img-blog.csdnimg.cn/8f9419e141bd43a5af408db74d849f89.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
每日算法
文章平均质量分 60
算法刷刷刷
Y_soybean_milk
这个作者很懒,什么都没留下…
展开
-
JavaScript算法46- 最长连续序列(leetCode:128middle)
在ES6中,所有的集合对象(数组、Set集合及Map集合)和字符串都是可迭代对象,可迭代对象都绑定了默认的迭代器,而其它类型(比如Object)则没有。注:Set 对象没有类似于 Map 对象中的 key,为了保持 API 与 Map 对象类似,这里每个 entry 的 key 和 value 都相同,所以返回的数组为。如果是Set集合,返回的是值(Set的值被同时用作键和值)。此方法返回一个新的集合迭代器对象,该对象包含了此集合中每个元素的。返回一个新的集合迭代器对象,该对象包含此集合对象中每个元素的。原创 2023-12-14 11:14:38 · 2428 阅读 · 1 评论 -
JavaScript算法45- 字母异位词分组(leetCode:49middle)
Map 实例的 values() 方法返回一个新的 map 迭代器对象,该对象包含此 map 中每个元素的值,按插入顺序排列。是由重新排列源单词的所有字母得到的一个新单词。可以按任意顺序返回结果列表。给你一个字符串数组,请你将。字符串–>数组 (数组 --> 字符串。原创 2023-11-17 14:59:48 · 2896 阅读 · 0 评论 -
JavaScript算法44- 最小处理时间(leetCode:2895middle)周赛
表示每颗处理器最早空闲时间。另给你一个下标从 0 开始的整数数组。,表示执行每个任务所需的时间。返回所有任务都执行完毕需要的。思路:最早空闲时间越大的处理器,处理 tasks越小的任务。个待执行任务,每个核心只执行 一个 任务。此处可用Math.max()替代。颗处理器,每颗处理器都有。注意:每个核心独立执行任务。原创 2023-10-10 15:38:39 · 3161 阅读 · 0 评论 -
JavaScript算法43- 分类求和并作差(leetCode:100103easy)周赛
优化:使用等差数列求和的公式,免去新建一个函数,循环计算。这里我写了一个函数,专门用来求1+2+…和=(首项+末项)×项数÷2。原创 2023-10-10 15:15:12 · 1600 阅读 · 0 评论 -
JavaScript算法42- K 件物品的最大和(leetCode:2600easy)周赛
袋子中装有一些物品,每个物品上都标记着数字。性能不太行呀,看看其它大神的解答。遍历二维数组及解构数组元素。原创 2023-03-29 22:47:18 · 1496 阅读 · 0 评论 -
JavaScript算法41- 回环句(leetCode:6253easy)周赛
6253. 回环句句子 是由单个空格分隔的一组单词,且不含前导或尾随空格。给你一个字符串 ,请你判断它是不是一个回环句。如果是,返回 ;否则,返回 。示例 :提示:累计 reduce():依次处理数组的每个成员,最终累计成一个值。原创 2022-12-04 17:10:09 · 264 阅读 · 0 评论 -
JavaScript算法39- 划分技能点相等的团队(leetCode:6254middle)周赛
6254. 划分技能点相等的团队给你一个正整数数组 ,数组长度为 偶数 ,其中 表示第 个玩家的技能点。将所有玩家分成 个 人团队,使每一个团队的技能点之和 相等 。团队的 化学反应 等于团队中玩家的技能点 乘积 。返回所有团队的 化学反应 之和,如果无法使每个团队的技能点之和相等,则返回 。示例 :提示:原创 2022-12-04 16:32:41 · 500 阅读 · 0 评论 -
JavaScript算法38- 猜数字大小(leetCode:374 easy)
374. 猜数字大小猜数字游戏的规则如下:你可以通过调用一个预先定义好的接口 来获取猜测结果,返回值一共有 3 种可能的情况(, 或 ):返回我选出的数字。示例提示思路:步骤原创 2022-07-05 18:54:37 · 220 阅读 · 0 评论 -
JavaScript算法37- 合并两个有序链表(leetCode:21easy)
21. 合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例提示原创 2022-07-04 18:16:19 · 570 阅读 · 0 评论 -
JavaScript算法36- 解密消息(leetCode:6108简单)周赛
6108. 解密消息给你字符串 和 ,分别表示一个加密密钥和一段加密消息。解密 的步骤如下:示例 1:提示:原创 2022-07-04 16:38:11 · 288 阅读 · 0 评论 -
JavaScript算法35- 小于等于 K 的最长二进制子序列(leetCode:2311中等)周赛
2311. 小于等于 K 的最长二进制子序列给你一个二进制字符串 和一个正整数 。请你返回 的 最长 子序列,且该子序列对应的 二进制 数字小于等于 。注意:示例:提示:原创 2022-06-23 16:04:27 · 265 阅读 · 0 评论 -
JavaScript算法34- 个位数字为 K 的整数之和(leetCode:2310中等)周赛
2310. 个位数字为 K 的整数之和给你两个整数 和 ,考虑具有以下属性的正整数多重集:注意:示例 :提示:原创 2022-06-23 14:39:35 · 217 阅读 · 0 评论 -
JavaScript算法33- 兼具大小写的最好英文字母(leetCode:2309简单)周赛
2309. 兼具大小写的最好英文字母给你一个由英文字母组成的字符串 ,请你找出并返回 中的 最好 英文字母。返回的字母必须为大写形式。如果不存在满足条件的字母,则返回一个空字符串。最好 英文字母的大写和小写形式必须 都 在 中出现。英文字母 比另一个英文字母 更好 的前提是:英文字母表中, 在 之 后 出现。示例提示Unicode编码 → 字符:字母 → Unicode编码.........原创 2022-06-22 09:05:46 · 308 阅读 · 0 评论 -
JavaScript算法32- 克隆图(leetCode:133中等)
133. 克隆图一、题目给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node { public int val; public List<Node> neighbors;}测试用例格式:简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val = 1),第二个节点值为 2(val = 2),以此类推。该图在测试用例中使用邻接列表原创 2022-05-23 20:41:39 · 222 阅读 · 0 评论 -
JavaScript算法31- 太平洋大西洋水流问题(leetCode:417中等)
417. 太平洋大西洋水流问题一、题目有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界,而 “大西洋” 处于大陆的右边界和下边界。这个岛被分割成一个由若干方形单元格组成的网格。给定一个 m x n 的整数矩阵 heights , heights[r][c] 表示坐标 (r, c) 上单元格 高于海平面的高度 。岛上雨水较多,如果相邻单元格的高度 小于或等于 当前单元格的高度,雨水可以直接向北、南、东、西流向相邻单元格。水可以从海洋附近的任何单元格流原创 2022-05-23 18:00:48 · 1520 阅读 · 0 评论 -
JavaScript算法30- 有效数字(leetCode:65困难)
65. 有效数字一、题目有效数字(按顺序)可以分成以下几个部分:一个 小数 或者 整数(可选)一个 'e' 或 'E' ,后面跟着一个 整数小数(按顺序)可以分成以下几个部分:(可选)一个符号字符('+' 或 '-')下述格式之一:至少一位数字,后面跟着一个点 '.'至少一位数字,后面跟着一个点 '.' ,后面再跟着至少一位数字一个点 '.' ,后面跟着至少一位数字整数(按顺序)可以分成以下几个部分:(可选)一个符号字符('+' 或 '-')至少一位数字部分有效原创 2022-05-23 11:15:42 · 313 阅读 · 0 评论 -
JavaScript算法29- 表示一个折线图的最少线段数(leetCode:6076)周赛
6076. 表示一个折线图的最少线段数一、题目给你一个二维整数数组 stockPrices ,其中 stockPrices[i] = [dayi, pricei] 表示股票在 dayi 的价格为 pricei 。折线图 是一个二维平面上的若干个点组成的图,横坐标表示日期,纵坐标表示价格,折线图由相邻的点连接而成。比方说下图是一个例子:请你返回要表示一个折线图所需要的 最少线段数 。示例 1:输入:stockPrices = [[1,7],[2,6],[3,5],[4,4],[5,4],[6,3原创 2022-05-22 17:18:47 · 264 阅读 · 0 评论 -
JavaScript算法28- 装满石头的背包的最大数量(leetCode:6075)周赛
6075. 装满石头的背包的最大数量一、题目现有编号从 0 到 n - 1 的 n 个背包。给你两个下标从 0 开始的整数数组 capacity 和 rocks 。第 i 个背包最大可以装 capacity[i] 块石头,当前已经装了 rocks[i] 块石头。另给你一个整数 additionalRocks ,表示你可以放置的额外石头数量,石头可以往 任意 背包中放置。请你将额外的石头放入一些背包中,并返回放置后装满石头的背包的 最大 数量。示例 1:输入:capacity = [2,3,4,5]原创 2022-05-22 16:12:54 · 464 阅读 · 0 评论 -
JavaScript算法27- 字母在字符串中的百分比(leetCode:6074)周赛
6074. 字母在字符串中的百分比一、题目给你一个字符串 s 和一个字符 letter ,返回在 s 中等于 letter 字符所占的 百分比 ,向下取整到最接近的百分比。示例 1:输入:s = "foobar", letter = "o"输出:33解释:等于字母 'o' 的字符在 s 中占到的百分比是 2 / 6 * 100% = 33% ,向下取整,所以返回 33 。示例 2:输入:s = "jjjj", letter = "k"输出:0解释:等于字母 'k' 的字符在 s 中原创 2022-05-22 15:47:01 · 365 阅读 · 0 评论 -
JavaScript算法26- 按位与结果大于零的最长组合(leetCode:6065)周赛
6065. 按位与结果大于零的最长组合一、题目对数组 nums 执行 按位与 相当于对数组 nums 中的所有整数执行 按位与 。例如,对 nums = [1, 5, 3] 来说,按位与等于 1 & 5 & 3 = 1 。同样,对 nums = [7] 而言,按位与等于 7 。给你一个正整数数组 candidates 。计算 candidates 中的数字每种组合下 按位与 的结果。 candidates 中的每个数字在每种组合中只能使用 一次 。返回按位与结果大于 0 的原创 2022-05-16 14:55:02 · 490 阅读 · 0 评论 -
JavaScript算法25- 不含特殊楼层的最大连续楼层数(leetCode:6064)周赛
6064. 不含特殊楼层的最大连续楼层数一、题目Alice 管理着一家公司,并租用大楼的部分楼层作为办公空间。Alice 决定将一些楼层作为 特殊楼层 ,仅用于放松。给你两个整数 bottom 和 top ,表示 Alice 租用了从 bottom 到 top(含 bottom 和 top 在内)的所有楼层。另给你一个整数数组 special ,其中 special[i] 表示 Alice 指定用于放松的特殊楼层。返回不含特殊楼层的 最大 连续楼层数。示例 1:输入:bottom = 2, t原创 2022-05-15 17:13:07 · 118 阅读 · 0 评论 -
JavaScript算法24- 移除字母异位词后的结果数组(leetCode:5234)周赛
移除字母异位词后的结果数组一、题目给你一个下标从 0 开始的字符串 words ,其中 words[i] 由小写英文字符组成。在一步操作中,需要选出任一下标 i ,从 words 中 删除 words[i] 。其中下标 i 需要同时满足下述两个条件:0 < i < words.lengthwords[i - 1] 和 words[i] 是 字母异位词 。只要可以选出满足条件的下标,就一直执行这个操作。在执行所有操作后,返回 words 。可以证明,按任意顺序为每步操作选择下标原创 2022-05-15 18:01:12 · 372 阅读 · 0 评论 -
JavaScript算法23- 统计值等于子树平均值的节点数(leetCode:6057)周赛
统计值等于子树平均值的节点数一、题目给你一棵二叉树的根节点 root ,找出并返回满足要求的节点数,要求节点的值等于其 子树 中值的 平均值 。注意:n 个元素的平均值可以由n个元素 求和 然后再除以 n ,并 向下舍入 到最近的整数。 root 的 子树 由 root 和它的所有后代组成。示例 1:输入:root = [4,8,5,0,1,null,6]输出:5解释:对值为 4 的节点:子树的平均值 (4 + 8 + 5 + 0 + 1 + 6) / 6 = 24 / 6 =.原创 2022-05-08 14:24:35 · 534 阅读 · 0 评论 -
JavaScript算法22- 字符串中最大的 3 位相同数字(leetCode:6056)周赛
6056. 字符串中最大的 3 位相同数字一、题目给你一个字符串 num ,表示一个大整数。如果一个整数满足下述所有条件,则认为该整数是一个 优质整数 :该整数是 num 的一个长度为 3 的 子字符串 。该整数由唯一一个数字重复 3 次组成。以字符串形式返回 最大的优质整数 。如果不存在满足要求的整数,则返回一个空字符串 "" 。注意:子字符串 是字符串中的一个连续字符序列。num 或优质整数中可能存在 前导零 。示例输入:num = "6777133339"输出:"777"原创 2022-05-08 13:32:48 · 318 阅读 · 0 评论 -
JavaScript算法21- 路径总和(leetCode:112)
路径总和一、题目给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。叶子节点 是指没有子节点的节点。示例输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true解释:等于目标和的根节点到叶节点路径如上图所示。二、题解原创 2022-05-02 15:40:16 · 851 阅读 · 0 评论 -
JavaScript算法20- 二叉树的中序遍历(leetCode:94)
二叉树的中序遍历文章目录二叉树的中序遍历一、题目二、题解方法1(递归算法)方法2(迭代算法)一、题目给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。示例输入:root = [1,null,2,3]输出:[1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?二、题解方法1(递归算法)var inorderTraversal = function (root) { if (!root) return [] let res = [] con原创 2022-05-02 13:13:52 · 758 阅读 · 0 评论 -
JavaScript算法19- 二叉树的层序遍历(leetCode:102)
二叉树的层序遍历一、题目给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。示例输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]二、题解层序遍历就是广度优先遍历不过在遍历的时候需要记录当前节点所处的层级,方便将其添加到不同的数组中/** * Definition for a binary tree node. * function TreeNode(val, left,原创 2022-05-02 11:40:15 · 1038 阅读 · 0 评论 -
JavaScript算法18- 二叉树的最小深度(leetCode:111)
二叉树的最小深度文章目录二叉树的最小深度一、题目二、题解方法1(递归)方法2(深度优先遍历)方法3(广度优先遍历)一、题目给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例输入:root = [3,9,20,null,null,15,7]输出:2二、题解方法1(递归)叶子节点的定义是左孩子和右孩子都为 null 时叫做叶子节点当 root 节点左右孩子都为空时,返回 1当 root 节点左右孩子有原创 2022-05-02 10:16:21 · 1096 阅读 · 0 评论 -
JavaScript算法17- 二叉树的最大深度(leetCode:104)
二叉树的最大深度一、题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。二、思路利用递归求解从下向上,每次返回的都是当前节点的子树具有的深度,那么最终返回的就是整个二叉树的最大深度执行过程:分别递归左子树和右子树,求其最大深度,然后比较左原创 2022-05-01 19:55:10 · 623 阅读 · 0 评论 -
JavaScript算法16- 删除有序数组中的重复项(leetCode:26)
删除有序数组中的重复项文章目录删除有序数组中的重复项一、题目二、题解方式1(改变数组长度)方式2(不改变数组长度)三、拓展一、题目给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k原创 2022-05-01 00:00:25 · 576 阅读 · 1 评论 -
JavaScript算法15-最小覆盖子串*(leetCode:76)
最小覆盖子串一、题目给你一个字符串s、一个字符串t。返回 s 中涵盖t所有字符的最小子串。如果 s 中不存在涵盖t所有字符的子串,则返回空字符串 ""。注意:对于t中重复字符,我们寻找的子字符串中该字符数量必须不少于t中该字符数量。如果 s 中存在这样的子串,我们保证它是唯一的答案。示例 :输入:s = "ADOBECODEBANC", t = "ABC"输出:"BANC"二、步骤用双指针维护一个滑动窗口。移动右指针,找到包含 t 的子串,移动左指针,尽量减少包含 t 的子串原创 2022-04-28 11:20:56 · 433 阅读 · 0 评论 -
JavaScript算法14-无重复字符的最长子串(leetCode:3)
无重复字符的最长子串文章目录无重复字符的最长子串一、题目二、解题步骤三、题解一、题目给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。示例 :输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。提示0 <= s.length <= 5 * 104s 由英文字母、数字、符号和空格组成二、解题步骤用双指针维护一个滑动窗口,用来剪切子串不断移动右指针,遇到重复字符,就把左指针移动到重复字符原创 2022-04-27 23:55:26 · 1723 阅读 · 0 评论 -
JavaScript算法13-两个数组的交集(leetCode:349)
两个数组的交集文章目录两个数组的交集题目解题思路题解拓展题目给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]解释:[4,9] 也是可通过的提示:1 <= nums1.length, nums原创 2022-04-27 11:07:39 · 766 阅读 · 0 评论 -
JavaScript算法12-环形链表(leetCode:141)
环形链表文章目录环形链表一、题目二、解题思路三、解法一、题目给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true 。 否则,返回 false 。示例输入:head = [3,2,0,-4], pos =原创 2022-04-23 23:33:29 · 265 阅读 · 0 评论 -
JavaScript算法11-删除排序链表中的重复元素(leetCode:83)
删除排序链表中的重复元素文章目录删除排序链表中的重复元素一、题目二、思路三、解法一、题目给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。示例输入:head = [1,1,2]输出:[1,2]提示链表中节点数目在范围[0, 300]内-100 <= Node.val <= 100题目数据保证链表已经按升序 排列二、思路因为链表是有序的,所以重复元素一定相邻遍历链表,如果发现当前元素和下个元素值相同,就删原创 2022-04-23 21:26:39 · 1266 阅读 · 0 评论 -
JavaScript算法10-两数相加(leetCode:2)
两数相加一、题目给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例1输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.二、步骤新建一个空链表遍历被相加的两个链表,模拟相加操作,将个位数追加到新链表上,将十位数留到下一位去相加三、原创 2022-04-23 20:26:38 · 237 阅读 · 0 评论 -
JavaScript算法09-反转链表(leetCode:206)
反转链表一、题目给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000进阶: 链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?二、思路迭代假设链表为 1→2→3→∅,我们想要把它改成 ∅←1←2←3。在遍历链表时,将当前节点的 next 指针改为指向前一个节点。由原创 2022-04-23 15:56:04 · 314 阅读 · 0 评论 -
JavaScript算法08-删除链表中的节点(leetCode:237)
删除链表中的节点一、题目请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。题目数据保证需要删除的节点 不是末尾节点。示例1输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:指定链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9示例2输入:head = [4,5,1,9], node = 1输出:[4,5,原创 2022-04-23 09:47:34 · 260 阅读 · 0 评论 -
JavaScript算法07-山羊拉丁文(leetCode:824)
山羊拉丁文文章目录山羊拉丁文一、题目二、分析三、解法一种很菜的方法进阶写法大佬式写法一、题目给你一个由若干单词组成的句子 sentence ,单词间由空格分隔。每个单词仅由大写和小写英文字母组成。请你将句子转换为 “山羊拉丁文(Goat Latin)”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。山羊拉丁文的规则如下:如果单词以元音开头('a', 'e', 'i', 'o', 'u'),在单词后添加"ma"。例如,单词 "apple" 变为 "applema" 。如果单词以原创 2022-04-21 19:50:48 · 124 阅读 · 0 评论 -
JavaScript算法06-最近的请求次数(leetCode:933)
最近的请求次数文章目录最近的请求次数一、题目二、分析三、解法四、while和do while一、题目写一个 RecentCounter 类来计算特定时间范围内最近的请求。请你实现RecentCounter 类:RecentCounter() 初始化计数器,请求数为 0 。int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。保证原创 2022-04-21 12:50:54 · 178 阅读 · 0 评论