-
二叉树的最大深度
104. 二叉树的最大深度题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。方法一:层次遍历可以使用层次遍历的方法,定义一个队列 deque,每一次将二叉树整行的节点存入队列,这样就可以根据循环的次数判断出二叉树的高度。/** * Definitio...…
-
球会落何处
1706. 球会落何处题目描述用一个大小为 m x n 的二维网格 grid 表示一个箱子。你有 n 颗球。箱子的顶部和底部都是开着的。箱子中的每个单元格都有一个对角线挡板,跨过单元格的两个角,可以将球导向左侧或者右侧。 将球导向右侧的挡板跨过左上角和右下角,在网格中用 1 表示。 将球导向左侧的挡板跨过右上角和左下角,在网格中用 -1 表示。在箱子每一列的顶端各放一颗球。每颗球都可能卡在箱子里或从底部掉出来。如果球恰好卡在两块挡板之间的 “V” 形图案,或者被一块挡导向到箱子的任意一...…
-
搜索旋转排序数组
搜索旋转排序数组题目描述整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给...…
-
找不同
389. 找不同题目描述给定两个字符串 s 和 t ,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例 1:输入:s = "abcd", t = "abcde"输出:"e"解释:'e' 是那个被添加的字母。示例 2:输入:s = "", t = "y"输出:"y"方法一:统计每个字母出现次数 我看到这个题目的第一反应是用两个数组 a 和 b 分别统计字符串 s 和 t 中每个字符出现的次数,然后遍历两个数组,数组b 比...…
-
仅仅反转字母
917. 仅仅反转字母题目描述给你一个字符串 s ,根据下述规则反转字符串: 所有非英文字母保留在原有位置。 所有英文字母(小写或大写)位置反转。返回反转后的 s 。示例 1:输入:s = "ab-cd"输出:"dc-ba"示例 2:输入:s = "a-bC-dEf-ghIj"输出:"j-Ih-gfE-dCba"示例 3:输入:s = "Test1ng-Leet=code-Q!"输出:"Qedo1ct-eeLg=ntse-T!"方法:双指针 整体而言,这个题目还是比较简单的,双指针...…
-
下一个排列
下一个排列 题目描述 方法 下一个排列题目描述实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。示例 1:输入:nums = [1,2,3]输出:[1,3,2]示例 2:输入:nums = [3,2,1]输出:[1,2,3]示例 3:输入:nums = [1,1,5]输出:[1,5,1]示例 4:输...…
-
SimpleMemory博客园皮肤
SimpleMemory博客园皮肤 1. 声明 2. 安装 SimpleMemory博客园皮肤1. 声明这个主题是一位大佬做的。大佬博客园地址:https://github.com/BNDong/Cnblogs-Theme-SimpleMemory。大佬Github地址:https://www.cnblogs.com/BNDong。2. 安装 申请JS权限 博客皮肤选择SimpleMemory ...…
-
删除元素中的重复项
26. 删除有序数组中的重复项题目描述给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums 的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k 个位置后返回 k 。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(...…
-
移除元素
27. 移除元素题目描述给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例1:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。...…
-
最接近的三数之和
16. 最接近的三数之和题目描述给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。方法:排序+双指针本题与三数之和类似,都可以使用排序+双指针的方式来实现。 其实最简单可以使用三层循环暴力求解,但是...…