LeetCode
LeetCode做题题解
Narakue
jmp 0x7c00
展开
-
从中序与后序遍历序列构造二叉树(二叉树)
题目根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]得到结果:[3,9,20,null,null,15,7]来源:力扣(LeetCode)链接:https://leetcode-cn.com/p...原创 2020-12-11 20:51:54 · 410 阅读 · 0 评论 -
Z 字形变换(字符串)
题目将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。比如输入字符串为 "LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个...原创 2020-12-05 20:51:16 · 331 阅读 · 1 评论 -
平衡二叉树(二叉树)
题目给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1 。示例 1:输入:root = [3,9,20,null,null,15,7]输出:true示例 2:输入:root = [1,2,2,3,3,null,null,4,4]输出:false示例 3:输...原创 2020-12-09 10:40:35 · 115 阅读 · 0 评论 -
整数反转(数组)
题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 ...原创 2020-12-06 17:16:41 · 227 阅读 · 0 评论 -
杨辉三角(数组)
题目给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/pasca...原创 2020-12-07 17:18:43 · 198 阅读 · 0 评论 -
无重复字符的最长子串(滑动窗口)
题目给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"...原创 2020-12-13 17:21:43 · 99 阅读 · 0 评论 -
对称二叉树(二叉树)
题目给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的:进阶:你可以运用递归和迭代两种方法解决这个问题吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/symmetric-t...原创 2020-12-10 14:44:24 · 162 阅读 · 0 评论 -
二叉树的最近公共祖先(二叉树)
题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root =[3,5,1,6,2,0,8,null,null,7,4]示例 1:...原创 2020-12-14 20:12:36 · 133 阅读 · 0 评论 -
二叉树中的最大路径和(二叉树)(DFS)
题目给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入:[1,2,3]1 / \ 2 3输出:6示例2:输入:[-10,9,20,null,null,15,7]-10 / 9 20 /...原创 2020-12-08 21:18:54 · 252 阅读 · 0 评论 -
从前序与中序遍历序列构造二叉树(二叉树)
题目根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/construct-binary-tree-...原创 2020-12-12 12:26:26 · 148 阅读 · 0 评论 -
填充每个节点的下一个右侧节点指针(二叉树)(BFS)
题目给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有...原创 2020-12-13 17:10:23 · 110 阅读 · 0 评论 -
二叉树的序列化与反序列化(二叉树)
题目序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:...原创 2020-12-15 08:23:20 · 113 阅读 · 0 评论 -
二叉树的锯齿形层次遍历(二叉树)(BFS)
题目给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树[3,9,20,null,null,15,7],3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[[3],[20,9],[15,7]]来源:力扣(LeetCo...原创 2020-12-15 17:01:22 · 463 阅读 · 0 评论 -
寻找两个正序数组的中位数(分治)
力扣的困难题极其简单!!!题目给定两个大小为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出并返回这两个正序数组的中位数。进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中...原创 2020-12-04 14:42:22 · 164 阅读 · 0 评论 -
二叉树的最小(最大)路径(二叉树)
题目给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例 1:输入:root = [3,9,20,null,null,15,7]输出:2示例 2:输入:root = [2,null,3,null,4,null,5,null,6]输出:5提示:树中节点数的范围在 [0, ...原创 2020-12-13 13:54:14 · 1378 阅读 · 0 评论 -
字符串转换整数 (atoi)(字符串)
题目请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在...原创 2020-12-06 23:19:12 · 97 阅读 · 0 评论 -
二叉树的层序遍历(二叉树)(BFS)
题目给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7],返回其层次遍历结果:[[3],[9,20],[15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-le...原创 2020-12-12 16:51:11 · 188 阅读 · 0 评论 -
最长回文子串(动态规划)
题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-pa...原创 2020-12-04 19:47:51 · 133 阅读 · 0 评论 -
二叉树的中序遍历(二叉树)
题目给定一个二叉树的根节点 root ,返回它的 中序遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]示例 5:输入:root = [1,null,2]输...原创 2020-12-10 17:26:48 · 254 阅读 · 0 评论 -
路径总和(二叉树)(DFS)
题目给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22,返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2来源:力扣(LeetCode)链接:http...原创 2020-12-13 15:52:49 · 109 阅读 · 0 评论 -
斐波那契数列(递归)
题目写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1)= 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初...原创 2020-12-17 17:13:05 · 1190 阅读 · 0 评论 -
旋转图像(数组)
题目给定一个 n×n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]...原创 2020-12-19 18:45:03 · 172 阅读 · 0 评论 -
LeetCode 387. 字符串中的第一个唯一字符(哈希表)
题目给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = "leetcode"返回 0s = "loveleetcode"返回 2提示:你可以假定该字符串只包含小写字母。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/first-unique-cha...原创 2020-12-23 19:54:29 · 105 阅读 · 0 评论 -
LeetCode 455. 分发饼干(贪心)
题目假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j]>= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大...原创 2020-12-25 17:05:53 · 120 阅读 · 0 评论 -
恢复二叉搜索树(二叉树)
题目给你二叉搜索树的根节点 root ,该树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用常数空间的解决方案吗?示例 1:输入:root = [1,3,null,null,2]输出:[3,1,null,null,2]解释:3 不能是 1 左孩子,因为 3 > 1 ...原创 2020-12-16 19:44:46 · 383 阅读 · 0 评论 -
最长公共前缀(字符串)
题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。来源:力扣(LeetCo...原创 2020-12-18 17:02:23 · 168 阅读 · 0 评论 -
LeetCode 69. x 的平方根(二分)
题目实现int sqrt(int x)函数。计算并返回x的平方根,其中x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。来源:力扣(LeetCode)链...原创 2020-12-21 17:32:31 · 119 阅读 · 0 评论 -
找不同(位运算)(哈希表)
题目给定两个字符串 s 和 t,它们只包含小写字母。字符串t由字符串s随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例 1:输入:s = "abcd", t = "abcde"输出:"e"解释:'e' 是那个被添加的字母。示例 2:输入:s = "", t = "y"输出:"y"示例 3:输入:s = "a",...原创 2020-12-18 17:38:22 · 135 阅读 · 0 评论 -
LeetCode 205. 同构字符串(哈希表)
题目给定两个字符串s和t,判断它们是否是同构的。如果s中的字符可以被替换得到t,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = "egg", t = "add"输出: true示例 2:输入: s = "foo", t ...原创 2020-12-27 20:13:39 · 133 阅读 · 0 评论 -
LeetCode 13. 罗马数字转整数(贪心)
题目罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写...原创 2020-12-26 14:16:39 · 92 阅读 · 0 评论 -
LeetCode 135. 分发糖果(贪心)
题目老师想给孩子们分发糖果,有 N个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例1:输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2...原创 2020-12-24 19:14:12 · 85 阅读 · 0 评论 -
LeetCode 188. 买卖股票的最佳时机 IV(动态规划)(递归)
题目给定一个整数数组prices ,它的第 i 个元素prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入:k = 2, prices = [2,4,1]输出:2解释:在第 1 天 (股票价格 =...原创 2020-12-28 15:55:43 · 208 阅读 · 0 评论 -
LeetCode 12. 整数转罗马数字(字符串)(贪心算法)
题目罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写...原创 2020-12-22 19:15:18 · 140 阅读 · 0 评论 -
四数之和(双指针)
题目描述:给定一个包含n 个整数的数组nums和一个目标值target,判断nums中是否存在四个元素 a,b,c和 d,使得a + b + c + d的值与target相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target...原创 2020-11-01 21:32:08 · 79 阅读 · 0 评论 -
水域大小(DFS)(BFS)
DFS BFS例题来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/pond-sizes-lcci你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大...原创 2020-11-04 20:46:03 · 311 阅读 · 0 评论 -
朋友圈(并查集)
LeetCode547题 朋友圈题目班上有N名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B的朋友,B 是 C的朋友,那么我们可以认为 A 也是 C的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个N * N的矩阵M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为...原创 2020-12-02 19:02:21 · 96 阅读 · 0 评论 -
N皇后(回溯)
n皇后问题研究的是如何将 n个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的n皇后问题的解决方案。每一种解法包含一个明确的n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例:输入:4输出:[[".Q..", // 解法 1"...原创 2020-11-06 08:56:46 · 72 阅读 · 0 评论 -
买卖股票的最佳时机 II(贪心)
题目给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格...原创 2020-11-12 20:22:38 · 98 阅读 · 0 评论