LeetCode
文章平均质量分 62
samsara_1
这个作者很懒,什么都没留下…
展开
-
LeetCode10. 正则表达式匹配(python)
给定一个字符串(s) 和一个字符模式(p)。实现支持'.'和'*'的正则表达式匹配。'.' 匹配任意单个字符。'*' 匹配零个或多个前面的元素。匹配应该覆盖整个字符串(s) ,而不是部分字符串。说明:s可能为空,且只包含从a-z的小写字母。 p可能为空,且只包含从a-z的小写字母,以及字符.和*。示例 1:输入:s = "aa"p...原创 2019-04-26 10:49:54 · 266 阅读 · 0 评论 -
LeetCode240. 搜索二维矩阵 II(python)
题目:编写一个高效的算法来搜索mxn矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。 每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, ...原创 2019-03-18 19:27:22 · 349 阅读 · 0 评论 -
LeetCode238. 除自身以外数组的乘积(python)
给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4](nums)输出: [24,12,8,6](output)说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题tips 不能使用循环嵌套(时间复杂度)运算思路:...原创 2019-03-18 14:53:35 · 242 阅读 · 0 评论 -
LeetCode64. 最小路径和(python)
给定一个包含非负整数的mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解题思路:动态规划核心公式: matrix[i][j] += min(matrix[...原创 2019-03-27 13:26:23 · 636 阅读 · 0 评论 -
LeetCode54. 螺旋矩阵(python)
54. 螺旋矩阵给定一个包含mxn个元素的矩阵(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...原创 2019-03-21 13:05:59 · 432 阅读 · 0 评论 -
LeetCode8. 字符串转换整数 (atoi)(python)
请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可...原创 2019-04-24 21:17:20 · 320 阅读 · 0 评论 -
LeetCode42. 接雨水(python)
解题思路:双指针接水量 = “轮廓”面积 - “柱子”面积的和我们有双指针从头尾开始遍历整个数组,右指针:从0开始,向左移动,直到遇到第一个大于0的数停下;左指针:从n-1开始,向左移动,直到遇到第一个大于0的数停下。此时比较height[left]和height[right]的大小,将数组内的所有数减去最小的值,并将减去的部分记录。直到左指针和右指针指向同一个点时结束。...原创 2019-05-08 16:18:00 · 518 阅读 · 0 评论 -
LeetCode84. 柱状图中最大的矩形(python)
解题思路: 单调栈先说单调栈,单调栈是一种特殊的栈,特殊的地方在于,每当有元素入栈时,只要栈顶元素大于要入栈的元素,栈顶元素就要弹出,直到栈顶元素小于等于当前元素,当前元素再入栈。所以说单调栈总是自底至顶单调的。对于这道题来说,寻找最大面积的矩形,我们只要把每个元素作为高的最大矩形都求出来,再求最大即可。遍历heights,大于栈顶元素则入栈。当栈顶元素大于当前元素,弹出栈顶,此...原创 2019-05-21 12:12:52 · 795 阅读 · 1 评论 -
LeetCode32. 最长有效括号(python)
给定一个只包含'('和')'的字符串,找出最长的包含有效括号的子串的长度。示例1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"解题思路:堆栈因为要找到包含有效括号最长的子串,所以我们要定义一个start最为当前子串的起始位置。从头开始遍历字符...原创 2019-05-12 15:22:33 · 537 阅读 · 0 评论 -
LeetCode33. 搜索旋转排序数组(python)
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是O(logn) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2...原创 2019-05-12 20:27:36 · 175 阅读 · 0 评论 -
N皇后问题(Python实现)
n皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。也就是说:存在一个N*N的棋盘,要放N个棋子,每个棋子不同行,不同列,不同(正反)对角线,如图:解题思路: 递归 + 回朔首先我们要给定一个矩阵,来存放棋子,从第一行开始遍历,接着遍历这一行的每一列。假设我们在位置[1, 2]处已经放上棋子,我们开始遍历第二行,首先判断[2,1]位置存放棋...原创 2019-05-27 17:01:41 · 15273 阅读 · 13 评论 -
LeetCode241. 为运算表达式设计优先级(python)
给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含+,-以及*。示例1:输入: "2-1-1"输出: [0, 2]解释: ((2-1)-1) = 0 (2-(1-1)) = 2示例2:输入: "2*3-4*5"输出: [-34, -14, -10, -10, 10]解...原创 2019-03-19 13:37:24 · 567 阅读 · 0 评论 -
LeetCode62/63. 不同路径问题(python)
62. 不同路径一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m和n的值均不超过 100。示例1:输入: m = 3, n = 2...原创 2019-03-20 23:08:36 · 570 阅读 · 0 评论 -
LeetCode15. 三数之和(python)
给定一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c ,使得a + b + c =0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]解题思路:...原创 2019-05-01 20:53:31 · 784 阅读 · 0 评论 -
LeetCode6. Z 字形变换(python)
将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。比如输入字符串为"LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的...原创 2019-04-23 10:38:18 · 244 阅读 · 0 评论 -
LeetCode链表相关题目(1)
21. 合并两个有序链表将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4# Definition for singly-linked list.# class ListNode:# d...原创 2019-04-01 12:58:45 · 115 阅读 · 0 评论 -
LeetCode2. 两数相加(python)
给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -...原创 2019-03-31 19:33:19 · 472 阅读 · 0 评论 -
LeetCode120/931. 下降路径问题(python)
120. 三角形最小路径和给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为11(即,2+3+5+1= 11)解题思路:贪婪算法使每一步都是当前最优,也就是说triangle[i][j]...原创 2019-03-30 09:36:51 · 139 阅读 · 0 评论 -
LeetCode5. 最长回文子串(python)
给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"解题思路:manacher(马拉车算法)马拉车是专门处理回文字符子串的一种算法。首先,回文字符串有两种:长度为奇数,"aba";长度为...原创 2019-03-29 17:02:50 · 883 阅读 · 0 评论 -
LeetCode3. 无重复字符的最长子串(python)
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最...原创 2019-03-24 19:55:58 · 669 阅读 · 1 评论 -
LeetCode48. 旋转图像(python)
给定一个n×n的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3...原创 2019-03-24 19:01:10 · 259 阅读 · 0 评论 -
LeetCode980. 不同路径 III(python)
在二维网格grid上,有 4 种类型的方格:1表示起始方格。且只有一个起始方格。 2表示结束方格,且只有一个结束方格。 0表示我们可以走过的空方格。 -1表示我们无法跨越的障碍。返回在四个方向(上、下、左、右)上行走时,从起始方格到结束方格的不同路径的数目,每一个无障碍方格都要通过一次。示例 1:输入:[[1,0,0,0],[0,0,0,0],[0,0,2,...原创 2019-03-22 13:53:41 · 377 阅读 · 0 评论 -
LeetCode59. 螺旋矩阵 II(python)
59. 螺旋矩阵 II给定一个正整数n,生成一个包含 1 到n2所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]解题思路:对每个周期(排列一圈),每个方向排列(放置)元素的个数固定;举例来说,对于n=4时,第一个周期每个方向都放置3(n-1)个元素,第...原创 2019-03-21 13:26:29 · 483 阅读 · 0 评论 -
LeetCode回溯问题小结
回溯问题的基本思路,直观的来说就是尝试所有的情况,如果行不通则返回上一步,再继续尝试下一种情况。回溯问题也可以被认为是有剪枝的深度优先搜索,关键就是要找到终止条件与如何前进。22. 括号生成class Solution: def __init__(self): self.res = [] def generateParenthesis...原创 2019-06-01 11:18:05 · 295 阅读 · 0 评论