LeetCode题解
Marshal Zheng
CUHK-SZ PhD student
展开
-
LeetCode题解(python)-69. x 的平方根
LeetCode题解(python)69. x 的平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。解题心...原创 2019-05-09 13:40:34 · 388 阅读 · 0 评论 -
LeetCode题解(python)-46. 全排列
LeetCode题解(python)46. 全排列题目描述给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解题心得本题——递归递归总是那么难以理解,所以不如看递归过程中发生了什么下面是测试代码和递归的...原创 2019-04-08 21:50:16 · 542 阅读 · 0 评论 -
LeetCode题解(python)-49. 字母异位词分组
LeetCode题解(python)49. 字母异位词分组题目描述给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]解题心得依次遍...原创 2019-04-12 09:12:38 · 272 阅读 · 0 评论 -
LeetCode题解(python)-43. 字符串相乘
LeetCode题解(python)43. 字符串相乘题目描述给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1...原创 2019-04-08 12:40:18 · 350 阅读 · 0 评论 -
LeetCode题解(python)-35. 搜索插入位置
LeetCode题解(python)35. 搜索插入位置题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4...原创 2019-03-28 23:21:15 · 366 阅读 · 0 评论 -
LeetCode题解(python)-36. 有效的数独
LeetCode题解(python)36. 有效的数独题目描述判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 '.' 表示。示例 1...原创 2019-04-02 11:25:29 · 398 阅读 · 0 评论 -
LeetCode题解(python)-34. 在排序数组中查找元素的第一个和最后一个位置
LeetCode题解(python)34. 在排序数组中查找元素的第一个和最后一个位置题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target =...原创 2019-04-01 18:47:17 · 381 阅读 · 0 评论 -
LeetCode题解(python)-41. 缺失的第一个正数
LeetCode题解(python)41. 缺失的第一个正数题目描述给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。解题心得本题看似简单,...原创 2019-04-07 00:10:27 · 488 阅读 · 0 评论 -
LeetCode题解(python)-29. 两数相除
LeetCode题解(python)29. 两数相除题目描述4给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3输出: 3示例 2:输入: dividend = 7, divis...原创 2019-03-27 20:40:44 · 418 阅读 · 0 评论 -
LeetCode题解(python)-40. 组合总和 II
LeetCode题解(python)40. 组合总和 II题目描述给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10...原创 2019-04-05 22:01:50 · 356 阅读 · 1 评论 -
LeetCode题解(python)-48. 旋转图像
48. 旋转图像题目描述给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2],...原创 2019-04-10 12:40:12 · 356 阅读 · 0 评论 -
LeetCode题解(python)-33. 搜索旋转排序数组
LeetCode题解(python)33. 搜索旋转排序数组题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示...原创 2019-03-31 22:10:00 · 405 阅读 · 0 评论 -
LeetCode题解(python)-47. 全排列 II
47. 全排列 II题目描述给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]解题心得解答本题只需要在昨天“全排列”的基础上,去除不重复元素即可解题代码class Solution: def permuteUnique(self, nums: List[in...原创 2019-04-10 10:29:30 · 507 阅读 · 0 评论 -
LeetCode题解(python)-39. 组合总和
LeetCode题解(python)39. 组合总和题目描述给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = ...原创 2019-04-04 20:36:47 · 546 阅读 · 0 评论 -
LeetCode题解(python)-50. Pow(x, n)
LeetCode题解(python)50. Pow(x, n)题目描述实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.2...原创 2019-04-12 13:28:03 · 315 阅读 · 0 评论 -
LeetCode题解(python)-60. 第k个排列
LeetCode题解(python)60. 第k个排列题目描述解题心得解答本题,第一反应,把所有的排列都列出来,然后取第k个——毫无疑问会超时的。这时就可以从数学角度来考虑问题了。所有的排列的出现是有规律的,如下:"123""132""213""231""312""321"从第一位开始,1,2,3,第二位,2,3,1,3,1,2(除了第一位之后按照从小到大的顺序出现),...原创 2019-04-25 22:54:05 · 478 阅读 · 0 评论 -
LeetCode题解(python)-51. N皇后
LeetCode题解(python)51. N皇后n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例:输入: 4输出: [ [".Q....原创 2019-04-14 11:32:06 · 416 阅读 · 0 评论 -
LeetCode题解(python)-68. 文本左右对齐
LeetCode题解(python)68. 文本左右对齐题目描述给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ' ' 填充,使得每行恰好有 maxWidth 个字符。要求尽可能均匀分配单词间的空格数量。如果某一行单...原创 2019-05-09 12:53:52 · 392 阅读 · 0 评论 -
LeetCode题解(python)-59. 螺旋矩阵 II
LeetCode题解(python3)59. 螺旋矩阵 II题目描述给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]解题心得本题是螺旋矩阵I的增强版,只需要使用同样的“拐弯”规则即可。需要强烈注意的是,矩阵的初始化,...原创 2019-04-24 23:45:46 · 318 阅读 · 0 评论 -
LeetCode题解(python)-63. 不同路径 II
LeetCode题解(python)63. 不同路径 II题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。**说明:**...原创 2019-04-28 17:03:56 · 348 阅读 · 0 评论 -
LeetCode题解(python)-58. 最后一个单词的长度
LeetCode题解(python)58. 最后一个单词的长度题目描述给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。**说明:**一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5解题心得本题较为简单,迷惑点在于字符串的最后一位或者几位是不是空格,怎么处理。...原创 2019-04-23 22:28:19 · 165 阅读 · 0 评论 -
LeetCode题解(python)-67. 二进制求和
LeetCode题解(python)67. 二进制求和题目描述给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"解题心得第一种方法:直接用二进制运算时间复杂度:O(ma...原创 2019-05-03 12:58:26 · 285 阅读 · 0 评论 -
LeetCode题解(python)-66. 加一
LeetCode题解(python)66. 加一题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3...原创 2019-05-03 11:57:05 · 268 阅读 · 0 评论 -
LeetCode题解(python)-62. 不同路径
LeetCode题解(python)62. 不同路径题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?**说明:**m 和 n 的值均不超过 100。示例 1...原创 2019-04-27 23:30:54 · 306 阅读 · 0 评论 -
LeetCode题解(python)-64. 最小路径和
LeetCode题解(python)64. 最小路径和题目描述解题心得典型的动态规划问题——最小路径和最佳子结构设计,参考前几天写的从左上角到右小角有多少种可能的路径。这里实际就是每个格子都有自己的价值(value),在走的过程中,要选择一个方向使得总路径和最小,即:从起点到当前位置之前的最小总路径价值+当前位置的价值。需要注意的是要单独考虑第一行和第一列,因为当i=0的时候,[i...原创 2019-05-01 21:29:16 · 522 阅读 · 0 评论 -
LeetCode题解(python)-61. 旋转链表
LeetCode题解(python)61. 旋转链表题目描述给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3-&...原创 2019-04-26 23:24:36 · 300 阅读 · 0 评论 -
LeetCode题解(python)-56. 合并区间
LeetCode题解(python)56. 合并区间题目描述给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释:...原创 2019-04-18 09:56:46 · 849 阅读 · 0 评论 -
LeetCode题解(python)-53. 最大子序和
53. 最大子序和题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。解题心得本题需要思考怎么用更快的方式得...原创 2019-04-15 12:27:00 · 315 阅读 · 0 评论 -
LeetCode题解(python)-52. N皇后 II
LeetCode题解(python)52. N皇后 II题目描述n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回 n 皇后不同的解决方案的数量。示例:输入: 4输出: 2解释: 4 皇后问题存在如下两个不同的解法。[ [".Q..", // 解法 1 "...Q",...原创 2019-04-15 12:13:10 · 223 阅读 · 0 评论 -
LeetCode题解(python)-54. 螺旋矩阵
LeetCode题解(python)54. 螺旋矩阵题目描述给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[ [1, 2, 3, 4], [5, ...原创 2019-04-17 20:28:50 · 495 阅读 · 0 评论 -
LeetCode题解(python)-25. k个一组翻转链表
LeetCode题解(python)25. k个一组翻转链表题目描述给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3-&...原创 2019-03-23 23:09:56 · 843 阅读 · 0 评论 -
LeetCode题解(python)-28. 实现strStr()
LeetCode题解(python)28. 实现strStr()题目描述实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 ...原创 2019-03-26 19:41:06 · 161 阅读 · 0 评论 -
LeetCode题解(python)-9. 回文数
LeetCode题解(python)9. 回文数题目描述:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释:...原创 2019-03-07 22:11:34 · 207 阅读 · 0 评论 -
LeetCode题解(python)-21. 合并两个有序链表
LeetCode题解(python)21. 合并两个有序链表题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->...原创 2019-03-19 18:36:08 · 266 阅读 · 0 评论 -
LeetCode题解(python)-12. 整数转罗马数字
LeetCode题解(python)12. 整数转罗马数字题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M ...原创 2019-03-10 20:37:31 · 248 阅读 · 0 评论 -
LeetCode题解(python)-8. 字符串转换整数
LeetCode题解(pyhon)8. 字符串转换整数 (atoi)题目描述:在任何情况下,若函数不能进行有效的转换时,请返回 0。说明:假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [−231, 231 − 1]。如果数值超过这个范围,qing返回 INT_MAX (231 − 1) 或 INT_MIN (−231) 。示例 1:输入: "42"输出: ...原创 2019-03-07 13:47:27 · 308 阅读 · 0 评论 -
LeetCode题解(python)-6. Z 字形变换
LeetCode题解(python)6. Z 字形变换题目描述:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOE...原创 2019-03-04 18:37:18 · 522 阅读 · 1 评论 -
LeetCode题解(python)-16. 最接近的三数之和
LeetCode题解(python)16. 最接近的三数之和题目描述给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1...原创 2019-03-14 15:45:51 · 248 阅读 · 0 评论 -
LeetCode题解(python)-11. 盛最多水的容器
LeetCode题解(python)11. 盛最多水的容器题目描述:给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。**说明:**你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数...原创 2019-03-09 22:27:04 · 574 阅读 · 0 评论 -
原 LeetCode题解(python)-10. 正则表达式匹配 + python正则表达式总结回顾
LeetCode题解(python)+ python正则表达式10. 正则表达式匹配题目描述给定一个字符串 (s) 和一个字符模式 (p)。实现支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符。'*' 匹配零个或多个前面的元素。匹配应该覆盖整个字符串 (s) ,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 ...原创 2019-03-08 22:21:52 · 595 阅读 · 0 评论