![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
胖丁大大
这个作者很懒,什么都没留下…
展开
-
99.恢复二叉搜索树
二叉搜索树中的两个节点被错误地交换。 请在不改变其结构的情况下,恢复这棵树。 示例 输入: [1,3,null,null,2] 1 / 3 \ 2 输出: [3,1,null,null,2] 3 / 1 \ 2 输入: [3,1,4,null,null,2] 3 / \ 1 4 / 2 输出: [2,1,4,null,null,3...原创 2019-10-21 10:53:34 · 80 阅读 · 0 评论 -
98.验证二叉搜索树
给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 输入: 2 / \ 1 3 输出: true 输入: 5 / \ 1 4 / \ 3 6 输出: false 解释:...原创 2019-10-16 11:38:33 · 87 阅读 · 0 评论 -
69.x的平方根
实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 输入: 4 输出: 2 输入: 8 输出: 2 说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。 解法 典型的二分查找题目,通过比较 mid2 与 x 的大小,来改变左边界或右边界。 ...原创 2019-09-18 11:25:01 · 133 阅读 · 0 评论 -
70.爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶 输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶。 1. 1 阶 + 1 阶 + 1 阶 2. 1 阶 + 2 阶 3. 2 阶 + 1 阶 解法 一、回(暴)...原创 2019-09-18 19:50:17 · 65 阅读 · 0 评论 -
71.简化路径
以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。 请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必...原创 2019-09-19 15:18:35 · 80 阅读 · 0 评论 -
54.螺旋矩阵
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] 输出: [1,2,3,6,9,8,7,4,5] 输入: [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12] ] 输出: [1,2,3,4,8,...原创 2019-08-29 15:01:48 · 105 阅读 · 0 评论 -
59.螺旋矩阵Ⅱ
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。 示例 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 解法 构造一个 n*n 矩阵 matrix,其元素在赋值前均为 0。 将走过的元素设为 num。 如果到达边界,则改变方向指针。 if (matrix[(i + di) % n][...原创 2019-09-03 11:34:49 · 135 阅读 · 0 评论 -
90.子集Ⅱ
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例 输入: [1,2,2] 输出: [ [2], [1], [1,2,2], [2,2], [1,2], [] ] 解法 本题相当于将 78.子集 中的不包含重复元素的约束条件去掉了,所以我们只需在78题基础上完成去重工作即可。 去除由数字相同排列导致的重复...原创 2019-10-09 16:26:13 · 114 阅读 · 0 评论 -
89.格雷编码
格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。 示例 输入: 2 输出: [0,1,3,2] 解释: 00 - 0 01 - 1 11 - 3 10 - 2 对于给定的 n,其格雷编码序列并不唯一。 例如,[0,2,3,1] 也是一个有效的格雷编码序列。 00 - 0 10 -...原创 2019-10-09 11:48:56 · 88 阅读 · 0 评论 -
81.搜索旋转排序数组Ⅱ
假设按照升序排序的数组在预先未知的某个点上进行了旋转。 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] 。 编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。 示例 输入: nums = [2,5,6,0,0,1,2], target = 0 输出: true 输入: nums = [2,5,6,0,0,1,2], ...原创 2019-09-26 10:20:08 · 84 阅读 · 0 评论 -
78.子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 解法 凡是涉及到数组元素排列组合问题的,均可使用46.全排列中的模板: 使用栈储存解,使用列表储存...原创 2019-09-24 09:49:15 · 77 阅读 · 0 评论 -
77.组合
给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。 示例 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 解法 思路:回溯法,个人喜欢用栈,操作对象都是新添加(或上一步添加)的元素。 判断压入元素是否大于栈顶元素,避免数字的重复使用 压入元素,递归进行下一次压入...原创 2019-09-23 17:09:29 · 90 阅读 · 0 评论 -
76.最小覆盖子串
给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。 示例 输入: S = "ADOBECODEBANC", T = "ABC" 输出: "BANC" 说明 如果 S 中不存这样的子串,则返回空字符串 “”。 如果 S 中存在这样的子串,我们保证它是唯一的答案。 解法 滑动窗口 在滑动窗口类型的问题中都会有两个指针。一个用于延伸现有窗口的 right ...转载 2019-09-23 16:34:24 · 93 阅读 · 0 评论 -
51.N皇后
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 上图为 8 皇后问题的一种解法。 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。 示例 输入: 4 输出: [ [".Q..", // 解法 1 "...Q", "Q.....原创 2019-08-28 11:53:55 · 151 阅读 · 0 评论 -
46.全排列
给定一个没有重复数字的序列,返回其所有可能的全排列。 示例 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 解法 思路:回溯法,个人喜欢用栈,操作对象都是新添加(或上一步添加)的元素。 压入元素前先判断栈中是否存在该元素,避免数字的重复使用 压入元素,递归进行下一次压入 当...原创 2019-08-23 19:35:25 · 100 阅读 · 0 评论