给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。 字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,”ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是) 题目数据保证答案符合 32 位带符号整数范围。 示例 1: 示例 2: 提示: 解题: 官方解答: 1.动态规划
Month: March 2023
LeetCode 114 二叉树展开为链表
给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 1: 示例 2: 示例 3: 提示: 进阶:你可以使用原地算法(O(1) 额外空间)展开这棵树吗? 解题: 验证的时候说错了,我专门构造了那个输入,本地的输出和答案是一样的,提交的输出居然和本地的不一样 官方解法: 1.前序遍历 通过迭代实现前序遍历 2.前序遍历和展开同步进行 3.寻找前驱节点
LeetCode 113 路径总和 II
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 示例 2: 示例 3: 提示: 解题: 官方解答: 1.深度优先搜索 2.广度优先搜索
LeetCode 112 路径总和
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 是指没有子节点的节点。 示例 1: 示例 2: 示例 3: 提示: 解题: 官方解答: 1.广度优先搜索 2.递归
LeetCode 111 二叉树的最小深度
给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 1: 示例 2: 提示: 解题: 官方解答: 1.深度优先搜索 2.广度优先搜索
LeetCode 110 平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 示例 2: 示例 3: 提示: 解题: 官方解答: 1.自顶向下的递归 2.自底向上的递归
LeetCode 109 有序链表转换二叉搜索树
给定一个单链表的头节点 head ,其中的元素 按升序排序 ,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差不超过 1。 示例 1: 示例 2: 提示: 解题: 官方解法: 1.分治 2.分治 + 中序遍历优化
LeetCode 108 将有序数组转换为二叉搜索树
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 示例 1: 示例 2: 提示: 解题: 官方解答: 1.中序遍历,总是选择中间位置左边的数字作为根节点 2.中序遍历,总是选择中间位置右边的数字作为根节点 3.中序遍历,选择任意一个中间位置数字作为根节点
LeetCode 107 二叉树的层序遍历 II
给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 示例 1: 示例 2: 示例 3: 提示: 解题: 官方解答: 1.广度优先搜索
LeetCode 106 从中序与后序遍历序列构造二叉树
给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 示例 2: 提示: 解题: 官方解答: 1.递归 2.迭代