LeetCode题解(python)
LeetCode解题的相关内容
Marshal Zheng
CUHK-SZ PhD student
展开
-
LeetCode题解(python)-77. 组合
LeetCode题解(python)77. 组合给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]解题心得本题是组合问题,显然要用递归回溯的方法。首先找到规律,要从n个元素中取k个元素,可以视为:1. 从n-1个元素中取k个元素;2. 从n-1个元素中取k-1个元素,再加上第n个元素。这样就从C(n,k)递归回溯到C(n-1,k)原创 2020-06-06 10:39:27 · 674 阅读 · 0 评论 -
LeetCode题解(python)-75. 颜色分类
LeetCode题解(python)75. 颜色分类给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序原创 2020-06-04 13:31:54 · 463 阅读 · 0 评论 -
LeetCode题解(python)-74. 搜索二维矩阵
LeetCode题解(python)74. 搜索二维矩阵编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [[1, 3, 5, 7],[10, 11, 16, 20],[23, 30, 34, 50]]target = 3输出: true示例 2:输入:matrix = [[1, 3, 5, 7],[10, 11,原创 2020-06-04 12:47:24 · 533 阅读 · 0 评论 -
LeetCode题解(python)-73. 矩阵置零
LeetCode题解(python)73. 矩阵置零给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]解题心得本题的难点是额外空原创 2020-06-04 11:07:39 · 726 阅读 · 0 评论 -
LeetCode题解(python)-71. 简化路径
LeetCode题解(python)71. 简化路径以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外原创 2020-05-29 14:12:50 · 340 阅读 · 0 评论 -
LeetCode题解(python)-70. 爬楼梯
LeetCode题解(python)[70. 爬楼梯](https://leetcode-cn.com/problems/sqrtx/)假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?**注意:**给定 n 是一个正整数。解题心得解答本题,适合把前几项写出来n=1 1n=2 2n=3 1+2n=4 2+(1+2)n=5 (2+1+2) + (1+2)……对于n阶,都相当于n-1阶+n-2阶的方法之和执行用时 :原创 2020-05-28 21:21:24 · 479 阅读 · 0 评论 -
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 · 412 阅读 · 0 评论 -
LeetCode题解(python)-68. 文本左右对齐
LeetCode题解(python)68. 文本左右对齐题目描述给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ' ' 填充,使得每行恰好有 maxWidth 个字符。要求尽可能均匀分配单词间的空格数量。如果某一行单...原创 2019-05-09 12:53:52 · 409 阅读 · 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 · 297 阅读 · 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 · 286 阅读 · 0 评论 -
LeetCode题解(python)-64. 最小路径和
LeetCode题解(python)64. 最小路径和题目描述解题心得典型的动态规划问题——最小路径和最佳子结构设计,参考前几天写的从左上角到右小角有多少种可能的路径。这里实际就是每个格子都有自己的价值(value),在走的过程中,要选择一个方向使得总路径和最小,即:从起点到当前位置之前的最小总路径价值+当前位置的价值。需要注意的是要单独考虑第一行和第一列,因为当i=0的时候,[i...原创 2019-05-01 21:29:16 · 543 阅读 · 0 评论 -
LeetCode题解(python)-63. 不同路径 II
LeetCode题解(python)63. 不同路径 II题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。**说明:**...原创 2019-04-28 17:03:56 · 360 阅读 · 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 · 316 阅读 · 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 · 314 阅读 · 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 · 502 阅读 · 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 · 327 阅读 · 0 评论 -
LeetCode题解(python)-58. 最后一个单词的长度
LeetCode题解(python)58. 最后一个单词的长度题目描述给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。**说明:**一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5解题心得本题较为简单,迷惑点在于字符串的最后一位或者几位是不是空格,怎么处理。...原创 2019-04-23 22:28:19 · 179 阅读 · 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 · 860 阅读 · 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 · 506 阅读 · 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 · 329 阅读 · 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 · 232 阅读 · 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 · 424 阅读 · 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 · 338 阅读 · 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 · 281 阅读 · 0 评论 -
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 · 372 阅读 · 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 · 534 阅读 · 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 · 556 阅读 · 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 · 360 阅读 · 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 · 505 阅读 · 0 评论 -
LeetCode题解(python)-40. 组合总和 II
LeetCode题解(python)40. 组合总和 II题目描述给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10...原创 2019-04-05 22:01:50 · 364 阅读 · 1 评论 -
LeetCode题解(python)-39. 组合总和
LeetCode题解(python)39. 组合总和题目描述给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = ...原创 2019-04-04 20:36:47 · 566 阅读 · 0 评论 -
LeetCode题解(python)-38. 报数
LeetCode题解(python)38. 报数题目描述报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "...原创 2019-04-03 21:12:20 · 301 阅读 · 0 评论 -
LeetCode题解(python)-36. 有效的数独
LeetCode题解(python)36. 有效的数独题目描述判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 '.' 表示。示例 1...原创 2019-04-02 11:25:29 · 410 阅读 · 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 · 404 阅读 · 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 · 414 阅读 · 0 评论 -
LeetCode题解(python)-31. 下一个排列
LeetCode题解(python)31. 下一个排列题目描述实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,...原创 2019-03-30 21:21:37 · 509 阅读 · 0 评论 -
LeetCode题解(python)-30. 串联所有单词的子串
LeetCode题解(python)30. 串联所有单词的子串题目描述给定一个字符串 s 和一些长度相同的单词 **words。**找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。示例 1:输入: s = "barfoothefoobarman", ...原创 2019-03-29 23:01:52 · 814 阅读 · 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 · 381 阅读 · 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 · 432 阅读 · 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 · 170 阅读 · 0 评论