LC 783. 二叉搜索树节点最小距离 题目描述这是 LeetCode 上的 783. 二叉搜索树节点最小距离 ,难度为 简单。 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 注意:本题与 530:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/ 相同 示例 1: 123输入:root = [4,2,6,1, 2021-04-13 DFS BFS 中序遍历 树的搜索 迭代 非迭代
LC 179. 最大数 题目描述这是 LeetCode 上的 179. 最大数 ,难度为 中等。 给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。 注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。 示例 1:123输入:nums = [10,2]输出:"210"示例 2:123输入:nums = [3,30,34,5,9]输出:"953 2021-04-12 贪心
LC 263. 丑数 题目描述这是 LeetCode 上的 263. 丑数 ,难度为 简单。 给你一个整数 n ,请你判断 n 是否为丑数。如果是,返回 true ,否则,返回 false 。 丑数就是只包含质因数 2、3 和 5 的正整数。 示例 1:12345输入:n = 6输出:true解释:6 = 2 × 3示例 2:12345输入:n = 8输出:true解释:8 = 2 × 2 × 2示例 3:12345输 2021-04-10 模拟 数学
LC 154. 寻找旋转排序数组中的最小值 II 题目描述这是 LeetCode 上的 154. 寻找旋转排序数组中的最小值 II ,难度为 困难。 已知一个长度为 n 的数组,预先按照升序排列,经由 $1$ 到 $n$ 次 旋转 后,得到输入数组。 例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到: 若旋转 $4$ 次,则可以得到 [4,5,6,7,0,1,4] 若旋转 $7$ 次,则可以得到 [0,1,4,4,5 2021-04-09 二分
LC 153. 寻找旋转排序数组中的最小值 题目描述这是 LeetCode 上的 153. 寻找旋转排序数组中的最小值 ,难度为 中等。 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。 例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2] 若旋转 7 次,则可以得到 [0,1,2,4,5,6,7] 注意,数 2021-04-08 二分
LC 81. 搜索旋转排序数组 II 题目描述这是 LeetCode 上的 81. 搜索旋转排序数组 II ,难度为 中等。 已知存在一个按非降序排列的整数数组 nums,数组中的值不必互不相同。 在传递给函数之前,nums 在预先未知的某个下标 k($0 <= k < nums.length$)上进行了旋转,使数组变为 $[nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1 2021-04-07 二分
LC 80. 删除有序数组中的重复项 II 题目描述这是 LeetCode 上的 80. 删除有序数组中的重复项 II ,难度为 中等。 给你一个有序数组 nums ,请你「原地」删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须「原地」修改输入数组 并在使用 $O(1)$ 额外空间的条件下完成。 说明: 为什么返回数值是整数,但输出的答案是数组呢? 请注意,输入数组是以「引用」方式传递 2021-04-06 双指针
LC 88. 合并两个有序数组 题目描述这是 LeetCode 上的 88. 合并两个有序数组 ,难度为 简单。 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。 你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。 示例 1:12 2021-04-05 双指针 排序
LC 781. 森林中的兔子 题目描述这是 LeetCode 上的 781. 森林中的兔子 ,难度为 中等。 森林中,每个兔子都有颜色。 其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。 我们将这些回答放在 answers 数组里。 返回森林中兔子的最少数量。 示例:12345678910111213141516输入: answers = [1, 1, 2]输出: 5解释:两只回答了 "1&qu 2021-04-04 贪心
LC 34. 在排序数组中查找元素的第一个和最后一个位置 题目描述这是 LeetCode 上的 34. 在排序数组中查找元素的第一个和最后一个位置 ,难度为 中等。 给定一个按照升序排列的整数数组 nums,和一个目标值 target。 找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 $[-1, -1]$。 示例 1:123输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示 2021-04-03 二分
LC 1143. 最长公共子序列 题目描述这是 LeetCode 上的 1143. 最长公共子序列 ,难度为 中等。 给定两个字符串 s1 和 s2,返回这两个字符串的最长公共子序列的长度。 如果不存在公共子序列,返回 $0$ 。 一个字符串的子序列是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。 例如,"ace" 是 "ab 2021-04-03 序列 DP 最长公共子序列 LCS
LC 面试题 17.21. 直方图的水量 题目描述这是 LeetCode 上的 面试题 17.21. 直方图的水量 ,难度为 困难。 给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 1。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的直方图,在这种情况下,可以接 6 个单位的水(蓝色部分表示水)。 感谢 Marcos 贡献此图。 示例:123输入: [0,1,0 2021-04-02 动态规划 双指针 数学
LC 416. 分割等和子集 题目描述这是 LeetCode 上的 416. 分割等和子集(上) ,难度为 中等。 给你一个 只包含正整数 的 非空 数组 nums 。 请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1:12345输入:nums = [1,5,11,5]输出:true解释:数组可以分割成 [1, 5, 5] 和 [11] 。示例 2:12345输入:nums = [1,2,3,5] 2021-04-01 背包 DP
LC 416. 分割等和子集 题目描述这是 LeetCode 上的 416. 分割等和子集(下) ,难度为 中等。 给你一个 只包含正整数 的 非空 数组 nums 。 请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1:12345输入:nums = [1,5,11,5]输出:true解释:数组可以分割成 [1, 5, 5] 和 [11] 。示例 2:12345输入:nums = [1,2,3,5] 2021-04-01 背包 DP
LC 1006. 笨阶乘 题目描述这是 LeetCode 上的 1006. 笨阶乘 ,难度为 中等。 通常,正整数 n 的阶乘是所有小于或等于 n 的正整数的乘积。 例如,factorial(10) = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1。 相反,我们设计了一个笨阶乘 clumsy:在整数的递减序列中,我们以一个固定顺序的操作符序列来依次替换原有的乘法操作符:乘法(*),除法(/) 2021-04-01 数学 栈