python 刷leetcode
R戎
这个作者很懒,什么都没留下…
展开
-
[ leeetcode 5] 最长回文子串 manacher算法详细解释
manacher算法 主要用来解决最长回文子串研究了两天这个算法理论,终于搞清楚了,打算自己写详细一点,方便大家阅读,也方便自己以后复习看起来容易回忆。参考了很多文献和他人写的代码,也看了一个视频,发现如果真想自己搞懂,必须亲自拿笔走一遍过程这篇文章写的特别详细:最长回文字符串参考马拉车求最长回文子串Manacher算法最长回文串四种解法python实现最长回文串我自己的总...原创 2019-03-25 20:00:30 · 202 阅读 · 0 评论 -
LeetCode 10 正则表达式匹配 python实现
题目:给定一个字符串 (s) 和一个字符模式 §。实现支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符。‘*’ 匹配零个或多个前面的元素。匹配应该覆盖整个字符串 (s) ,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = "aa"p = "a"输...原创 2019-03-28 19:43:26 · 242 阅读 · 0 评论 -
LeetCode 20 有效的括号 python实现
题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入...原创 2019-03-28 19:56:23 · 211 阅读 · 0 评论 -
LeetCode32 最长有效括号Python
题目:给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"class Solution: def longestValidParentheses(self, s: str) ->...原创 2019-04-21 09:47:01 · 342 阅读 · 0 评论 -
LeetCode27 移除元素Python
题目:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个...原创 2019-04-21 09:52:04 · 256 阅读 · 0 评论 -
LeetCode39 组合总数Python
题目:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集为:[...原创 2019-04-21 09:55:22 · 646 阅读 · 1 评论 -
leetcode 40 组合总数II Python
题目:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[...原创 2019-04-22 16:06:20 · 315 阅读 · 0 评论 -
LeetCode34 在排序数组中查找元素的第一个和最后一个位置 Python
题目:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8,10], ...原创 2019-04-19 11:19:13 · 149 阅读 · 0 评论 -
leetcode 36 有效的数独Python
题目:判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:[ ["5","3",".",".","7",...原创 2019-04-19 20:24:18 · 207 阅读 · 0 评论 -
LeetCode216 组合总数3 python
题目:找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]此题与前面两个组合题目思路类似 ...原创 2019-05-14 09:45:17 · 233 阅读 · 0 评论 -
LeetCode48 旋转图像
题目:给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]...原创 2019-05-14 09:59:23 · 156 阅读 · 0 评论 -
LeetCode 575 分糖果
题目:给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。示例 1:输入: candies = [1,1,2,2,3,3]输出: 3解析: 一共有三种种类的糖果,每一种都有两个。最优分配方案:妹妹获得[1,2,3],弟弟也获得[1,2,3]。这样使妹妹获得糖果的种类数最多。...原创 2019-05-09 13:32:43 · 126 阅读 · 0 评论 -
leetcode 172阶乘后的0 Python
题目:给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。思路:题目很好理解,数阶乘后的数字末尾有多少个零。最简单粗暴的方法就是先乘完再说,然后一个一个数。事实上,你在使用暴...原创 2019-05-07 13:15:59 · 208 阅读 · 0 评论 -
LeetCode 8 字符串转整数
示例 1:输入: "42"输出: 42示例 2:输入: " -42"输出: -42解释: 第一个非空白字符为 ‘-’, 它是一个负号。我们尽可能将负号与后面所有连续出现的数字组合起来,最后得到 -42 。示例 3:输入: "4193 with words"输出: 4193解释: 转换截止于数字 ‘3’ ,因为它的下一个字符不为数字。示例 4:输入: "words...原创 2019-05-07 14:36:35 · 144 阅读 · 0 评论 -
LeetCode 34 解数独python
题目 : 编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 ‘.’ 表示。一个数独。答案被标成红色。①首先,某个方格内放入的元素,必须未出现在行,列以及对应的子区域中.所以,行,列及子区域未出现元素的交集即为...原创 2019-05-15 21:01:40 · 397 阅读 · 0 评论 -
LeetCode 28 实现strStr() python
题目 :实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", needle =...原创 2019-05-16 10:25:06 · 209 阅读 · 0 评论 -
对称的二叉树 python leetcode101
题目 :给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3用递归和队列实现#递归# Definition...原创 2019-07-30 20:21:55 · 207 阅读 · 0 评论 -
LeetCode33 搜索旋转排序数组 python实现
题目:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], tar...原创 2019-04-01 19:55:08 · 262 阅读 · 0 评论 -
LeetCode31 下一个排列
题目:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1思路:刚看到这题的时候,感受是每个字都认识,但是连起...原创 2019-04-01 19:38:04 · 134 阅读 · 0 评论 -
[leetcode 4] 寻找两个有序数组的中位数 python
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)...原创 2019-03-25 21:33:32 · 149 阅读 · 0 评论 -
LeetCode 17 电话号码的字母组合 python实现
题目:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序class Solution: ...原创 2019-03-29 14:16:24 · 358 阅读 · 0 评论 -
leetcode 18 四数之和 python
题目:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:...原创 2019-03-29 14:32:40 · 519 阅读 · 0 评论 -
[leetcode 1] 两数之和 python
题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。例如:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1] ...原创 2019-03-22 15:53:43 · 158 阅读 · 0 评论 -
[leetcode 3] 无重复字符串的最长子串 python
题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke...原创 2019-03-23 19:22:27 · 723 阅读 · 0 评论 -
LeetCode 22括号生成python实现
题目:给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]方法一:暴力法思路我们可以生成所有 2^{2n}22n个 ‘(’ 和 ‘)’ 字符构成的序列。然后,我们将检查每一个是否有效。...原创 2019-03-30 19:51:43 · 425 阅读 · 0 评论 -
LeetCode 29 两数相除
题目:给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3输出: 3示例 2:输入: dividend = 7, divisor = -3输出: -2说明:被除数和除数均为 32...原创 2019-03-30 20:12:08 · 243 阅读 · 0 评论 -
LeetCode 11 盛水最多的容器 python实现
题目:给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。思路:这道题最粗暴的方法当然是O(n^2),当然对于medium难度的题目来说,显然不能这么做 ...原创 2019-03-26 21:55:47 · 187 阅读 · 0 评论 -
[leetcode 7] 整数反转 python
题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。class Solutio...原创 2019-03-24 09:06:03 · 136 阅读 · 0 评论 -
LeetCode 12 整数转罗马数字 python
题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 ...原创 2019-03-27 08:45:41 · 138 阅读 · 0 评论 -
LeetCode 13 罗马数字转整数 python
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。1...原创 2019-03-27 08:48:00 · 188 阅读 · 0 评论 -
LeetCode 23合并K个排序链表
题目:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6一、暴力解决class Solution(object): def mergeKLists(self,...原创 2019-03-31 10:00:36 · 132 阅读 · 0 评论 -
LeetCode26 删除排序数组中的重复项
题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:...原创 2019-03-31 10:43:08 · 131 阅读 · 0 评论 -
LeetCode 15 三数之和 python
题目 :给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]class Sol...原创 2019-03-27 09:44:05 · 156 阅读 · 0 评论 -
剑指面试题24-反转链表 leetcode 206
题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。分析:需要把头结点的next设置为None,需要保存下一个节点,防止链表断开。非递归实现:# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next...原创 2019-03-16 15:54:23 · 161 阅读 · 0 评论 -
leetcode 24两辆交换链表中的节点 python实现
题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.# Definition for singly-linked list.# class ListNode:# def __init__(self,...原创 2019-03-27 16:10:31 · 230 阅读 · 0 评论 -
leetcode 121、122 股票的最大利润
121 题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。...原创 2019-09-03 17:24:34 · 386 阅读 · 0 评论