题目描述
给定两个表示复数的字符串。
返回表示它们乘积的字符串。注意,根据定义 i2 = -1 。
给定一个 N 叉树,找到其最大深度。
最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。
例如,给定一个 3叉树
:
我们应返回其最大深度,3。
1000
。5000
。1 | """ |
给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。
返回该 最大总和 。
1 | 示例 1: |
1 | 1 <= n <= 104 |
1 | class Solution: |
给定一个二叉树,计算 整个树 的坡度 。
一个树的 节点的坡度 定义即为,该节点左子树的节点之和和右子树节点之和的 差的绝对值 。如果没有左子树的话,左子树的节点之和为 0 ;没有右子树的话也是一样。空结点的坡度是 0 。
整个树 的坡度就是其所有节点的坡度之和。
示例 1:
1 | 输入:root = [1,2,3] |
示例 2:
1 | 输入:root = [4,2,9,3,5,null,7] |
示例 3:
1 | 输入:root = [21,7,14,1,1,2,2,3,3] |
提示:
[0, 104]
内-1000 <= Node.val <= 1000
(深度优先遍历,DFS) O(n)
遍历过程中,分别递归遍历左子树和右子树,分别取得它们的结点总和,并累计答案。然后将自身结点的值和左右子树结点的总和累加到一起返回。
每个结点仅遍历一次,故时间复杂度为 O(n)
1 | # Definition for a binary tree node. |
给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。
示例 1 :
1 | 输入:nums = [1,1,1], k = 2 |
说明 :
1 | class Solution: |
给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和结点值的子树。s 的一个子树包括 s 的一个结点和这个结点的所有子孙。s 也可以看做它自身的一棵子树。
1 | 样例 |
(暴力遍历) O(nm)
思路很简单,对于 s 的每一个结点,都尝试与 t 进行匹配,此操作递归进行即可。
匹配时,仍然需要递归匹配当前 s 中的子树和 t 的每一个结点。
s 的每个结点都需要 O(m) 的时间匹配,故总时间复杂度为 O(nm)。
1 | # Definition for a binary tree node. |