leetcode-javascript icon indicating copy to clipboard operation
leetcode-javascript copied to clipboard

:beers: 喝杯小酒,一起做题。前端攻城狮从零入门算法的宝藏题库,根据知名算法老师的经验总结了 100+ 道 LeetCode 力扣的经典题型 JavaScript 题解和思路。已按题目类型分 label,一起加油。

Results 101 leetcode-javascript issues
Sort by recently updated
recently updated
newest added

111.二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: ``` 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. ``` ## 思路 ### DFS 记录一个最小值 min,每当 DFS 到节点既没有左节点也没有右节点,就更新这个 min...

BFS
DFS
二叉树

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 = 10 亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码? 致谢: 特别感谢 @pbrother  添加此问题并且创建所有测试用例。 来源:力扣(LeetCode)...

双指针
贪心算法

给定正整数  n,找到若干个完全平方数(比如  1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 示例  1: 输入: n = 12 输出: 3 解释: 12 = 4 + 4 + 4. 示例 2: 输入: n = 13...

动态规划

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 示例  1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 示例  2: 给定 nums = [0,0,1,1,1,2,2,3,3,4], 函数应该返回新的长度...

双指针
复习 * 1

删除链表中等于给定值 val 的所有节点。 ``` 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5 ``` https://leetcode-cn.com/problems/remove-linked-list-elements ## 思路 此题的主要思路是建立一个**傀儡节点**,这样在 while 循环中就只需要考虑对**下一个节点**的处理。 如果下一个节点值和目标值相同,那么就把 `cur.next = cur.next.next` 这样转移到**下下个节点**。 还有一个细节需要注意的是,如果下一个节点和目标值相同,此时循环中不需要用 `cur = cur.next` 把引用转移到下一个节点,因为此时自然而然的进入下一轮循环后,就会对 `cur.next`...

待复习
链表

给定一个  m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。 ``` 示例 1: 输入: [   [1,1,1],   [1,0,1],   [1,1,1] ] 输出: [   [1,0,1],   [0,0,0],   [1,0,1] ] 示例 2: 输入: [   [0,1,2,0],   [3,4,5,2],   [1,3,1,5] ]...

递归与回溯

给定一个包含  m x n  个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 ``` 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] 输出:...

递归与回溯

你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为 shorter,长度较长的木板长度为 longer。你必须正好使用 k 块木板。编写一个方法,生成跳水板所有可能的长度。 返回的长度需要从小到大排列。 ``` 示例: 输入: shorter = 1 longer = 2 k = 3 输出: {3,4,5,6} 提示: 0 < shorter

递归与回溯

给定一组单词 words,编写一个程序,找出其中的最长单词,且该单词由这组单词中的其他单词组合而成。若有多个长度相同的结果,返回其中字典序最小的一项,若没有符合要求的单词则返回空字符串。 ``` 示例: 输入: ["cat","banana","dog","nana","walk","walker","dogwalker"] 输出: "dogwalker" 解释: "dogwalker"可由"dog"和"walker"组成。 提示: 0

动态规划
排序

如果序列  `X_1, X_2, ..., X_n`  满足下列条件,就说它是   斐波那契式   的: - `n >= 3` - 对于所有  `i + 2

动态规划