【Q111】(ez) 二叉树的最小深度
给定一个二叉树,找出其最小深度。
最小深度是从根节点到 最近叶子节点 的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],3 / \ 9 20 / \ 15 7返回它的最小深度 2.
class Solution {
/*
* 这是一道陷阱题————求深度时,最终的节点一定是【叶子节点】
* 1
* \
* 2
* 如果不分类讨论的话,从"1"处直接向左递归返回了0,这是一个最小值,但不合法(要求必须是叶子节点)
*/
public int minDepth(TreeNode root) {
if(root == null){
return 0;
}
if(root.left == null && root.right == null){ // 无左右节点,是叶子节点
return 1;
}
if(root.left != null && root.right == null){ // 只有左树
return minDepth(root.left) + 1;
}
if(root.left == null && root.right != null){ // 只有右树
return minDepth(root.right) + 1;
}
if(root.left != null && root.right != null){ // 左右树都有
return Math.min(minDepth(root.left), minDepth(root.right)) + 1;
}
return 0;
}
}
【Q201】(md) 数字范围按位与
给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。
示例:输入: [5,7]
输出: 4
class Solution {
/**
*【位运算】如果对二进制和位运算比较敏感的话,其实很简单。
* 难在想不到。
*/
public int rangeBitwiseAnd(int m, int n) {
int count = 0;
while(m != n){
m >>= 1;
n >>= 1;
count++;
}
return m <<= count;
}
}
【Q459】(ez) 重复的子字符串
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。
示例 :输入: “abab”
输出: True
class Solution {
/**
* 如果s串满足条件,则该串×2后,去掉两头的字符,得到的字符应该包含s本身
*/
public boolean repeatedSubstringPattern(String s) {
return (s + s).substring(1, 2 * s.length() - 1).indexOf(s) != -1;
}
}
本页的题目均算得上是"ez"难度,但并不常规。有的是陷阱题,有的需要零批次。
Qs from https://leetcode-cn.com
♥ loli suki
♠ end
本文精选LeetCode中三道易级题目进行深入解析,包括二叉树的最小深度、数字范围按位与及重复的子字符串。通过实战案例,揭示了算法背后的思考逻辑与解题技巧。


1456

被折叠的 条评论
为什么被折叠?



