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" 2021-04-04 贪心
LC 34. 在排序数组中查找元素的第一个和最后一个位置 题目描述这是 LeetCode 上的 34. 在排序数组中查找元素的第一个和最后一个位置 ,难度为 中等。 给定一个按照升序排列的整数数组 nums,和一个目标值 target。 找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 $[-1, -1]$。 进阶: 你可以设计并实现时间复杂度为 $O(\log{n})$ 的算法解决此问题吗? 示例 1:123 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 数学 栈
LC 90. 子集 II 题目描述这是 LeetCode 上的 90. 子集 II ,难度为 中等。 给你一个整数数组 nums,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。 示例 1:123输入:nums = [1,2,2]输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]示例 2:123输入:nums = [0] 2021-03-31 DFS 状态压缩 位运算 回溯算法
LC 74. 搜索二维矩阵 题目描述这是 LeetCode 上的 74. 搜索二维矩阵 ,难度为 中等。 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。 示例 1: 123输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3输出:tru 2021-03-30 二分 二叉搜索树
LC 190. 颠倒二进制位 题目描述这是 LeetCode 上的 190. 颠倒二进制位 ,难度为 简单。 颠倒给定的 32 位无符号整数的二进制位。 提示: 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 在 Java 中,编译器使用二进制补码记法来表示有符号整数。因 2021-03-29 模拟 位运算
LC 173. 二叉搜索树迭代器 题目描述这是 LeetCode 上的 173. 二叉搜索树迭代器 ,难度为 中等。 实现一个二叉搜索树迭代器类 BSTIterator,表示一个按中序遍历二叉搜索树(BST)的迭代器: BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会作为构造函数的一部分给出。指针应初始化为一个不存在于 BST 中的数字,且该数字小 2021-03-28 中序遍历 树的搜索
LC 61. 旋转链表 题目描述这是 LeetCode 上的 61. 旋转链表 ,难度为 中等。 给你一个链表的头节点 head,旋转链表,将链表每个节点向右移动 k 个位置。 示例 1: 123输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3] 示例 2:123输入:head = [0,1,2], k = 4输出:[2,0,1] 提示: 链表中节点的数目在范围 $[0, 500]$ 2021-03-27 链表
LC 面试题 03.01. 三合一 题目描述这是 LeetCode 上的 面试题 03.01. 三合一 ,难度为 简单。 三合一。描述如何只用一个数组来实现三个栈。 你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标,value表示压入的值。 构造函数会传入一个stackSize参数,代表每个栈的大小。 示 2021-03-26 栈
LC 83. 删除排序链表中的重复元素 题目描述这是 LeetCode 上的 83. 删除排序链表中的重复元素 ,难度为 简单。 存在一个按升序排列的链表,给你这个链表的头节点 head,请你删除所有重复的元素,使每个元素只出现一次 。 返回同样按升序排列的结果链表。 示例 1: 123输入:head = [1,1,2]输出:[1,2] 示例 2:123输入:head = [1,1,2,3,3]输出:[1,2,3] 提示: 链表中节点 2021-03-26 链表