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输出: 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 链表
LC 82. 删除排序链表中的重复元素 II 题目描述这是 LeetCode 上的 82. 删除排序链表中的重复元素 II ,难度为 中等。 存在一个按升序排列的链表,给你这个链表的头节点 head,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中没有重复出现的数字。 返回同样按升序排列的结果链表。 示例 1: 123输入:head = [1,2,3,3,4,4,5]输出:[1,2,5] 示例 2:123输入:head = [1, 2021-03-25 链表
LC 456. 132 模式 题目描述这是 LeetCode 上的 456. 132 模式 ,难度为 中等。 给你一个整数数组 nums,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:$i < j < k$ 和 $nums[i] < nums[k] < nums[j]$ 。 如果 nums 中存在 132 模式的子序列 , 2021-03-24 单调栈
LC 341. 扁平化嵌套列表迭代器 题目描述这是 LeetCode 上的 341. 扁平化嵌套列表迭代器 ,难度为 中等。 给你一个嵌套的整型列表。 请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。 列表中的每一项或者为一个整数,或者是另一个列表,其中列表的元素也可能是整数或是其他列表。 示例 1:12345输入: [[1,1],2,[1,1]]输出: [1,1,2,1,1]解释: 通过重复调用 next 直到 hasN 2021-03-23 栈 DFS 队列
LC 155. 最小栈 题目描述这是 LeetCode 上的 155. 最小栈 ,难度为 简单。 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 示例:123输入:["MinStack","p 2021-03-22 栈
LC 191. 位1的个数 题目描述这是 LeetCode 上的 191. 位1的个数 ,难度为 简单。 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。 提示: 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示 2021-03-22 位运算
LC 73. 矩阵置零 题目描述这是 LeetCode 上的 73. 矩阵置零 ,难度为 中等。 给定一个 $m \times n$ 的矩阵,如果一个元素为 $0$ ,则将其所在行和列的所有元素都设为 $0$ 。 请使用「原地」算法。 进阶: 一个直观的解决方案是使用 $O(m \times n)$ 的额外空间,但这并不是一个好的解决方案。 一个简单的改进方案是使用 $O(m + n)$ 的额外空间,但这仍然不是最好 2021-03-21 模拟
LC 150. 逆波兰表达式求值 题目描述这是 LeetCode 上的 150. 逆波兰表达式求值 ,难度为 中等。 根据 逆波兰表示法,求表达式的值。 有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 说明: 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 示例 1:12345输入:tokens = ["2&q 2021-03-20 表达式计算
LC 1603. 设计停车系统 题目描述这是 LeetCode 上的 1603. 设计停车系统 ,难度为 简单。 请你给一个停车场设计一个停车系统。停车场总共有三种不同大小的车位:大,中和小,每种尺寸分别有固定数目的车位。 请你实现 ParkingSystem 类: ParkingSystem(int big, int medium, int small) 初始化 ParkingSystem 类,三个参数分别对应每种停车位的数 2021-03-19 哈希表 位运算