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

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。 例如,给定三角形: ``` [ [2], [3,4], [6,5,7], [4,1,8,3] ] ``` 自顶向下的最小路径和为  11(即,2 + 3 + 5 + 1 = 11)。...

动态规划
待复习

# 社区看到的优解 其实这题本身是我想复杂了,我是一个个格子去遍历,然后再上下左右去扩展延伸。 但是其实只需要遍历四个边界上的节点,遇到 O 的边界点才开始蔓延遍历,并且把遍历到的节点都标记为 M(防止重复遍历) 最后再一次性遍历整个二维数组,遇到 W 标记的格子都转为 O(因为是从边界蔓延的,一定是不符合 X 的条件的)。 这样遍历所走的路就会少很多。 ```js var solve = function (board) { if (board.length == 0) return null; for (var y...

DFS
复习 * 1

给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: ``` board = [ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ] 给定 word = "ABCCED", 返回 true 给定 word = "SEE", 返回 true 给定 word = "ABCB", 返回 false ```...

例题详解
递归与回溯

找出所有相加之和为  n 的  k  个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 说明: 所有数字都是正整数。 解集不能包含重复的组合。  示例 1: ``` 输入: k = 3, n = 7 输出: [[1,2,4]] 示例 2: 输入: k = 3,...

递归与回溯

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: ``` 输入: nums = [1,2,3] 输出: [ [3],   [1],   [2],   [1,2,3],   [1,3],   [2,3],   [1,2],   [] ] ``` 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/subsets 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ## 思路 求子集,其实可以转化为在数组中,求长度从 `1 ~ nums.length`...

待复习
递归与回溯

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: ``` 给定 1->2->3->4, 你应该返回 2->1->4->3. ``` 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ## 思路 这题本意比较简单,`1 -> 2 -> 3 -> 4` 的情况下可以定义一个递归的辅助函数 `helper`,这个辅助函数对于节点和它的下一个节点进行交换,比如 `helper(1)` 处理 `1 -> 2`,并且把交换变成 `2 ->...

待复习
例题详解
链表

反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-linked-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ## 思路 记录一个 next 表示下一个节点, cur 表示当前节点,prev 表示上一个节点, 在循环中不断的把 cur.next 赋值为 prev,然后 cur 前进为刚刚保存的 next 节点,直到 cur 为 null。...

链表

给定一个字符串,请你找出其中不含有重复字符的   最长子串   的长度。 示例  1: ``` 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 ``` 示例 2: ``` 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 ``` 示例 3: ```...

待复习
例题详解
滑动窗口

给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: ``` 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1 返回 true, 因为存在目标和为 22...

DFS
待复习
例题详解
二叉树

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 ![image](https://user-images.githubusercontent.com/23615778/84261360-3698be00-ab4e-11ea-93a5-64628fee6ab8.png) 示例: ``` 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。 ``` 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ## 思路 每次递归中都对当前数字所代表的的字母全部列出来,拼在已完成的字符后面,再交给下一次递归。通过 index 下标来判断是否完成,一旦长度符合,就放入结果数组中。...

待复习
例题详解
递归与回溯