LeetCode 99 恢复二叉搜索树

给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树 。 示例 1: 示例 2: 提示: 进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用 O(1) 空间的解决方案吗? 解题: 官方解答: 1.显式中序遍历 2.隐式中序遍历 3.Morris 中序遍历

Continue reading


LeetCode 97 交错字符串

给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: 注意:a + b 意味着字符串 a 和 b 连接。 示例 1: 示例 2: 示例 3: 提示: 进阶:您能否仅使用 O(s2.length) 额外的内存空间来解决它? 解题: 官方解答: 1.动态规划 使用滚动数组优化空间复杂度

Continue reading


LeetCode 93 复原 IP 地址

有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。 例如:”0.1.2.201″ 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、”192.168.1.312″ 和 “192.168@1.1” 是 无效 IP 地址。给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。你 不能 重新排序或删除 s 中的任何数字。你可以按 任何 顺序返回答案。 示例 1: 示例 2: 示例 3: 提示: 解题: 官方解答: 1.回溯 做了两个多小时,比官方速度快,值了

Continue reading


LeetCode 92 反转链表 II

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1: 示例 2: 提示: 进阶: 你可以使用一趟扫描完成反转吗? 解题: 官方解答: 1.穿针引线 2.一次遍历「穿针引线」反转链表(头插法)

Continue reading