剑指offer55-Ⅰ 二叉树的深度【DFS】
题目描述
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
例如:
给定二叉树 [3,9,20,null,null,15,7]
,
1 | 3 |
返回它的最大深度 3 。
提示:
节点总数 <= 10000
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
例如:
给定二叉树 [3,9,20,null,null,15,7]
,
1 | 3 |
返回它的最大深度 3 。
提示:
节点总数 <= 10000
给定一棵二叉搜索树,请找出其中第k大的节点。
示例 1:
1 | 输入: root = [3,1,4,null,2], k = 1 |
示例 2:
1 | 输入: root = [5,3,6,2,4,null,null,1], k = 3 |
限制:
1 ≤ k ≤ 二叉搜索树元素个数
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。
示例 1:
1 | 输入: [0,1,3] |
示例 2:
1 | 输入: [0,1,2,3,4,5,6,7,9] |
限制:
1 | 1 <= 数组长度 <= 10000 |
统计一个数字在排序数组中出现的次数。
示例 1:
1 | 输入: nums = [5,7,7,8,8,10], target = 8 |
示例 2:
1 | 输入: nums = [5,7,7,8,8,10], target = 6 |
限制:
1 | 0 <= 数组长度 <= 50000 |
输入两个链表,找出它们的第一个公共节点。
如下面的两个链表:
在节点 c1 开始相交。
示例 1:
1 | 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 |
示例 2:
1 | 输入:intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2 |
注意:
null
.在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。
示例 1:
1 | 输入: [7,5,6,4] |
限制:
1 | 0 <= 数组长度 <= 50000 |
1 | private static void mergeSort(int[] nums, int left, int right, int[] temp) { |
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例:
1 | s = "abaccdeff" |
限制:
1 | 0 <= s 的长度 <= 50000 |
我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。
示例:
1 | 输入: n = 10 |
说明:
1
是丑数。n
不超过1690。请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。
示例 1:
1 | 输入: "abcabcbb" |
示例 2:
1 | 输入: "bbbbb" |
示例 3:
1 | 输入: "pwwkew" |
提示:
s.length <= 40000