leetcode
乐观点摸摸头
-------------------------
展开
-
Leetcode 17. 电话号码的字母组合
Leetcode 17. 电话号码的字母组合题目说明给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].题目解析Python代码1.队列回溯 def letterCombinations(self, digits: str) -> List[str]:原创 2020-12-01 08:25:49 · 84 阅读 · 0 评论 -
10. 正则表达式匹配
Leetcode 10. 正则表达式匹配题目说明给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。示例 1:输入:s = “aa” p = “a”输出:false解释:“a” 无法匹配 “aa” 整个字符串。示例 2:输入:s = “aa” p = “a*”输出:true解释:因为 ‘*’ 代表可以匹配零个或多个前面原创 2020-12-01 08:18:42 · 174 阅读 · 0 评论 -
Leetcode 63. 不同路径II
Leetcode 63. 不同路径II题目说明一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。示例 1:输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输出:2解释:3x3 网格的正中间有一个障原创 2020-11-24 08:43:17 · 98 阅读 · 0 评论 -
Leetcode 62. 不同路径
Leetcode 62. 不同路径题目说明一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向右 -> 向下向右 -> 向下 -&g原创 2020-11-24 08:35:09 · 60 阅读 · 0 评论 -
Leetcode 59. 螺旋矩阵II
Leetcode 59. 螺旋矩阵II题目说明给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]题目解析建立元素全为 0 的正方形矩阵,方向数组((0,1),(1,0),(0,-1)(-1,0))while循环,按方向数组的递进方向给矩阵赋值,当长度超过矩阵长度或矩阵长度坐标位的值不为0,方向改变时间复杂度O(n), 空间复杂度O(n2原创 2020-11-24 08:17:10 · 62 阅读 · 0 评论 -
Leetcode 57. 插入区间(Python 实现)
Leetcode 57. 插入区间(Python 实现)题目说明给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例 1:输入:intervals = [[1,3],[6,9]], newInterval = [2,5]输出:[[1,5],[6,9]]示例 2:输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [原创 2020-11-22 12:39:53 · 245 阅读 · 0 评论 -
Leetcode 56. 合并区间(Python 实现)
Leetcode 56. 合并区间(Python 实现)题目说明给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: intervals = [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。题目解析原创 2020-11-22 11:05:28 · 455 阅读 · 0 评论 -
Leetcode 54. 螺旋矩阵
Leetcode 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, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,6,7]题目解析常规做法建立路径原创 2020-11-22 10:57:40 · 48 阅读 · 0 评论 -
Leetcode 53. 最大子序和
Leetcode 53. 最大子序和题目说明给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。题目解析动态规划从第二个元素开始,后面每一个元素都为该元素 + max(0,上个元素)滑动窗口设置中间值mid = 0, 遍历数组,当数组元素 + mid > 0 ,赋值给mid,mid赋值resul原创 2020-11-22 10:51:00 · 48 阅读 · 0 评论 -
Leetcode 48. 旋转图像
Leetcode 48. 旋转图像题目说明给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]示例 2:给定 matrix =[[ 5, 1, 9,11],[ 2, 4, 8,10],原创 2020-11-22 10:42:52 · 125 阅读 · 0 评论 -
Leetcode 42. 接雨水
Leetcode 42. 接雨水题目说明给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5]输出:9题目解析动态规划遍历数组两次,得到每个坐原创 2020-11-19 20:39:14 · 69 阅读 · 0 评论 -
Leetcode 41. 缺失的第一个正数
Leetcode 41. 缺失的第一个正数题目说明给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。题目解析将数组中的负数都赋值为数组长度 + 1遍历数组,若遍历变量的绝对值不等于数组长度 + 1,将遍历变量的绝对值的坐标变为该坐标的负值。遍历数组原创 2020-11-19 20:34:10 · 52 阅读 · 0 评论 -
Leetcode 40. 组合总和 II
Leetcode 40. 组合总和 II题目说明给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1, 7],[1, 2, 5],[2, 6],[1, 1原创 2020-11-17 14:13:45 · 99 阅读 · 1 评论 -
Leetcode 39. 组合总和
Leetcode 39. 组合总和题目说明给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[[7],[2,2,3]]示例 2:输入:candidates =原创 2020-11-17 09:09:33 · 97 阅读 · 0 评论 -
Leetcode 27. 移除元素
Leetcode 27. 移除元素题目说明给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 n原创 2020-11-17 08:45:20 · 48 阅读 · 0 评论 -
Leetcode 26. 删除排序数组中的重复项
Leetcode 26. 删除排序数组中的重复项题目说明给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,原创 2020-11-17 08:36:40 · 47 阅读 · 0 评论 -
Leetcode 18. 四数之和
Leetcode 18. 四数之和题目说明给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[[-1, 0, 0, 1],[-2, -1, 1, 2],[原创 2020-11-17 08:27:22 · 104 阅读 · 0 评论 -
Leetcode 16. 最接近的三数之和
Leetcode 16. 最接近的三数之和题目说明给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.length <= 10^3-10^3 <= nums[原创 2020-11-17 08:14:51 · 53 阅读 · 0 评论 -
leetcode 15. 三数之和
Leetcode 15. 三数之和题目说明给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]题目解析数组双指针法对数组进行排序。遍历数组,对于每次遍历,对没有遍历的后续元素设置左右指原创 2020-11-15 09:31:33 · 47 阅读 · 0 评论 -
Leetcode 11. 盛水最多的容器
Leetcode 11. 盛水最多的容器题目说明给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)原创 2020-11-15 09:20:47 · 96 阅读 · 0 评论 -
Leetcode 1.两数之和
Leetcode 1.两数之和题目说明给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]题目解析暴力解法 时间复杂度O(n2n^2n2)map解法:将不适用的列表项及其下标放入原创 2020-11-15 09:10:26 · 47 阅读 · 0 评论