leetcode算法
c_木ss
走还没有走过的路
展开
-
Leetcode 516. 最长回文子序列
题目:给定一个字符串s,找到其中最长的回文子序列。可以假设s的最大长度为1000。示例 1:输入:"bbbab"输出:4一个可能的最长回文子序列为 "bbbb"。示例 2:输入:"cbbd"输出:2一个可能的最长回文子序列为 "bb"。思路:定义dp[i][j]:表示s[i...j]之间的最长子序列的长度,注意是子序列,不是子串,子序列是可以跳跃的,子串不可以...原创 2020-05-07 09:23:39 · 243 阅读 · 0 评论 -
Leetcode 10. 正则表达式匹配
题目给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = "aa"...原创 2020-05-05 22:27:32 · 327 阅读 · 0 评论 -
Leetcode 44. 通配符匹配
题目:给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = "aa"p = "a"...原创 2020-05-05 09:59:40 · 180 阅读 · 0 评论 -
Leetcode 72. 编辑距离
题目给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> rorse (将 'h' 替换为 'r')rorse -> rose (删...原创 2020-05-01 19:51:30 · 156 阅读 · 0 评论 -
Leetcode 714. 买卖股票的最佳时机含手续费
题目:给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。示例 1:输入: prices ...原创 2020-04-30 08:33:40 · 220 阅读 · 1 评论 -
Leetcode 309. 最佳买卖股票时机含冷冻期
题目:给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3 解释: 对应的交易状态为: [买入, 卖...原创 2020-04-29 00:34:34 · 156 阅读 · 0 评论 -
Leetcode 188. 买卖股票的最佳时机 IV
给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [2,4,1], k = 2输出: 2解释: 在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 ...原创 2020-04-28 00:22:14 · 236 阅读 · 0 评论 -
leetcode123. 买卖股票的最佳时机 III
题目:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得...原创 2020-04-26 09:31:10 · 170 阅读 · 0 评论 -
Leetcode 122. 买卖股票的最佳时机 II
题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交...原创 2020-04-24 10:36:22 · 149 阅读 · 0 评论 -
Leetcode 121. 买卖股票的最佳时机
题意:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。...原创 2020-04-24 09:16:30 · 140 阅读 · 0 评论 -
Leetcode 337. 打家劫舍 III
题意:在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1:输入: [3,2...转载 2020-04-23 10:08:58 · 187 阅读 · 0 评论 -
Leetcode 213.打家劫舍 II
题意:你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [2,3,2]输出: 3解释:...原创 2020-04-21 18:11:06 · 112 阅读 · 0 评论 -
Leetcode 198 打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号...原创 2020-04-21 08:26:35 · 143 阅读 · 0 评论 -
Leetcode 354.俄罗斯套娃信封问题
题意:给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。说明:不允许旋转信封。示例:输入: envelopes = [[5,4],[6,4],[6,7],[2,3]]输出:...原创 2020-04-18 23:18:31 · 154 阅读 · 0 评论 -
Leetcode 152.乘积最大子数组
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-product-subarray给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字)。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出:...原创 2020-04-15 12:14:13 · 144 阅读 · 0 评论 -
Leetcode 53.最大子序和
链接:https://leetcode-cn.com/problems/maximum-subarray/给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解...原创 2020-04-15 09:40:34 · 124 阅读 · 0 评论 -
Leetcode 120.三角形最小路径和
链接:https://leetcode-cn.com/problems/triangle给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n...原创 2020-04-14 11:54:03 · 146 阅读 · 0 评论 -
Leetcode 300 最长上升子序列
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2)==========================================...原创 2020-04-12 18:12:12 · 122 阅读 · 0 评论 -
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说明:如果你可以运用递归和迭代两种方法解决这个问题,会很加分。解法:用递归做比较简单:一棵树是对称的等价于它的...原创 2020-03-19 23:25:23 · 105 阅读 · 0 评论 -
数字中的1——leetcode233
题目:给定一个整数n, 计算所有小于等于n的非负整数中数字1出现的个数自己的实现方法:使用两个个for循环,第一个for实现对数字的查找,将数字转换为字符串,第二个for查看1是否在字符串中,最后统计1的个数。代码如下:def func(x): digit_1 = 0 num = [] for i in range(x+1): str1 = st...原创 2019-02-24 11:52:44 · 222 阅读 · 0 评论 -
python Leetcode732-我的日程安排表 III
我的日程安排表 III内容:实现一个 MyCalendar 类来存放你的日程安排,你可以一直添加新的日程安排MyCalendar 有一个 book(int start, intend)方法。它意味着在start到end时间内增加一个日程安排,注意,这里的时间是半开区间,即 [start, end), 实数 x 的范围为,start <= x < end。当 K 个日程安排有一...原创 2019-02-25 20:55:13 · 793 阅读 · 0 评论 -
python-leetcode-462-最少移动次数使数组元素相等 II
题目描述:给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1。 您可以假设数组的长度最多为10000。例如:输入:[1,2,3]输出:2说明:只有两个动作是必要的(记得每一步仅可使其中一个元素加1或减1): [1,2,3] => [2,2,3] => [2,2,2]代码如下:class Solut...原创 2019-03-05 10:05:18 · 610 阅读 · 0 评论 -
python leetcode-414-第三大的数
**题号: **414**题目: **第三大的数**难度: **简单**内容: **给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。示例 1:输入: [3, 2, 1]输出: 1解释: 第三大的数是 1.示例 2:输入: [1, 2]输出: 2解释: 第三大的数不存在, 所以返回最大的数 2 .示例 ...原创 2019-03-03 15:32:05 · 260 阅读 · 0 评论 -
python-leetcode-671-合并二叉树
描述:给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:注意: 合并必须从两个树的根节点开始。代码如下:# Definition for a binary tree node.# c...原创 2019-03-06 16:01:45 · 265 阅读 · 0 评论 -
python-leetcode-390-消除游戏
题目描述:给定一个从1 到 n 排序的整数列表。首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾。第二步,在剩下的数字中,从右到左,从倒数第一个数字开始,每隔一个数字进行删除,直到列表开头。我们不断重复这两步,从左到右和从右到左交替进行,直到只剩下一个数字。返回长度为 n 的列表中,最后剩下的数字。示例:输入:n = 9,1 2 3 4 5 6 7 8 9...原创 2019-03-09 22:56:26 · 602 阅读 · 0 评论 -
python-leetcode-130-被围绕的区域
**题号: **130**题目: **被围绕的区域**难度: **中等**内容: **给定一个二维的矩阵,包含 'X' 和 'O'( 字母 O )。找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X ...原创 2019-03-14 23:18:06 · 386 阅读 · 0 评论 -
python-leetcode-200-岛屿的个数
**题号: **200**题目: **岛屿的个数**难度: **中等**内容: **给定一个由 '1'(陆地)和'0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:110001100...原创 2019-03-17 22:00:10 · 451 阅读 · 0 评论 -
python-leetcode-128-最长连续序列
**题号: **128**题目: **最长连续序列**难度: **困难**内容: **给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。class Solution: def longestConsec...原创 2019-03-13 10:19:11 · 804 阅读 · 0 评论 -
python-leetcode-547-朋友圈
**题号: **547**题目: **朋友圈**难度: **中等**内容: **班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 N N 的矩阵 M ,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 ...原创 2019-03-21 21:48:25 · 558 阅读 · 0 评论 -
python leetcode-502-IPO
题目:IPO内容:假设 LeetCode 即将开始其 IPO。为了以更高的价格将股票卖给风险投资公司,LeetCode希望在 IPO 之前开展一些项目以增加其资本。由于资源有限,它只能在 IPO 之前完成最多 k 个不同的项目。帮助 LeetCode 设计完成最多 k 个不同项目后得到最大总资本的方式。给定若干个项目。对于每个项目 i ,它都有一个纯利润 P i,并且需要最小的资本 C i...原创 2019-02-27 21:06:24 · 248 阅读 · 0 评论