leetcode
leetcode copied to clipboard
🐌🐌🐌 使用 JavaScript 记录算法题解,🚦 通过 Issues 标签进行分类,方便后续的复习
编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表:  在节点 c1 开始相交。 示例 1:  ``` 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Reference of the node with...
给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。**注意:pos 不作为参数进行传递**,仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回 true 。 否则,返回 false 。 **进阶:** 你能用 O(1)(即,常量)内存解决此问题吗? 示例 1:  ``` 输入:head = [3,2,0,-4],...
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。 说明:不允许修改给定的链表。 进阶: - 你是否可以使用 O(1) 空间解决此题? 示例 1:  ``` 输入:head = [3,2,0,-4], pos = 1 输出:返回索引为...
设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。 在链表类中实现这些功能: - get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。 - addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。 - addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。 - addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度,则该节点将附加到链表的末尾。如果...
二进制手表顶部有 4 个 LED 代表 **小时(0-11)**,底部的 6 个 LED 代表 **分钟(0-59)**。 每个 LED 代表一个 0 或 1,最低位在右侧。 例如,上面的二进制手表读取 “3:25”。 给定一个非负整数 n 代表当前 LED 亮着的数量,返回所有可能的时间。 示例: ``` 输入: n = 1...
给定一个正整数 n,将其拆分为**至少**两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: ``` 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1。 ``` 示例 2: ``` 输入: 10 输出: 36 解释:...
给定一个二叉树,返回它的 后序 遍历。 示例: ``` 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] ``` 进阶: 递归算法很简单,你可以通过迭代算法完成吗? > 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 --- 示例给的太简单了, 我们无法从中看出任何规律, 所以这里我增加一个示例  这里通过两条辅助线来展示规律: `ACEDB | HIG...
给定一个 N 叉树,返回其节点值的后序遍历。 例如,给定一个 `3叉树` :  返回其后序遍历: `[5,6,3,2,4,1]`. 说明: 递归法很简单,你可以使用迭代法完成此题吗? > 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/n-ary-tree-postorder-traversal 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ---  我们通过两条分割线, 来寻找规律: ``` ACEDB | HIG | F 左 右 父 ``` 这样来看,...
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 进阶: - 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 - 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗? 示例 1: ``` 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步:...
找出所有相加之和为 **n** 的 **k** 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 说明: 所有数字都是正整数。 解集不能包含重复的组合。 示例 1: ``` 输入: k = 3, n = 7 输出: [[1,2,4]] ``` 示例 2: ``` 输入: k...