LeetCode
痴迷、淡然~
Life is 10% what happens to you and 90% how you react to it.
展开
-
LeetCode:1. 两数之和
LeetCode:1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 ...原创 2019-09-03 10:15:50 · 149 阅读 · 0 评论 -
LeetCode:123. 买卖股票的最佳时机 III(python)
LeetCode:123. 买卖股票的最佳时机 III(python)给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成两笔交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,...原创 2019-09-12 20:24:49 · 1666 阅读 · 1 评论 -
LeetCode:122. 买卖股票的最佳时机 II(python)
LeetCode:122. 买卖股票的最佳时机 II(python)给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)...原创 2019-09-12 09:26:42 · 1384 阅读 · 0 评论 -
LeetCode:121. 买卖股票的最佳时机(python)
LeetCode:121. 买卖股票的最佳时机(python)给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 =...原创 2019-09-12 09:17:23 · 2183 阅读 · 0 评论 -
LeetCode:141. 环形链表(python)
LeetCode:141. 环形链表(python)给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:he...原创 2019-09-11 15:34:28 · 337 阅读 · 0 评论 -
LeetCode:53. 最大子序和(python)
LeetCode:53. 最大子序和(python)给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。LeetCode ...原创 2019-09-10 20:31:11 · 941 阅读 · 0 评论 -
LeetCode:61. 旋转链表(python)
LeetCode:61. 旋转链表(python)给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4-&...原创 2019-09-10 17:20:43 · 431 阅读 · 0 评论 -
LeetCode:23. 合并K个排序链表(python)
LeetCode:23. 合并K个排序链表(python)合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6LeetCode 链接思路:分治法合并两个有序链表(...原创 2019-09-10 16:12:05 · 1274 阅读 · 0 评论 -
LeetCode:21. 合并两个有序链表(python)
LeetCode:21. 合并两个有序链表(python)将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4LeetCode 链接思路:迭代,遍历两个链表,比较两个节点值,指向较小值节点递归,比较链表...原创 2019-09-10 15:18:01 · 857 阅读 · 1 评论 -
LeetCode:877. 石子游戏(python)
LeetCode:877. 石子游戏(python)亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最...原创 2019-09-14 17:23:47 · 907 阅读 · 0 评论 -
LeetCode:300. 最长上升子序列(python)
LeetCode:300. 最长上升子序列(python)给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的...原创 2019-09-14 20:43:24 · 2751 阅读 · 0 评论 -
LeetCode:322. 零钱兑换(python)
LeetCode:322. 零钱兑换(python)给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2]...原创 2019-09-23 10:13:26 · 1441 阅读 · 0 评论 -
LeetCode:142. 环形链表 II(python)
LeetCode:142. 环形链表 II(python)给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:ta...原创 2019-09-23 08:45:37 · 1229 阅读 · 0 评论 -
LeetCode:91. 解码方法(python)
LeetCode:91. 解码方法(python)一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: “12”输出: 2解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。示例 2:输入: “226”输出: 3解释...原创 2019-09-20 09:01:03 · 800 阅读 · 1 评论 -
LeetCode:160. 相交链表(python)
LeetCode:160. 相交链表(python)编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with va...原创 2019-09-19 11:30:35 · 526 阅读 · 0 评论 -
LeetCode:72. 编辑距离(python)
LeetCode:72. 编辑距离(python)给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入: word1 = “horse”, word2 = “ros”输出: 3解释:horse -> rorse (将 ‘h’ 替换...原创 2019-09-17 15:18:30 · 1283 阅读 · 0 评论 -
LeetCode:714. 买卖股票的最佳时机含手续费(python)
LeetCode:714. 买卖股票的最佳时机含手续费(python)给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每次交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。示例 1:输入: prices = [1, 3, 2,...原创 2019-09-17 09:09:03 · 979 阅读 · 0 评论 -
LeetCode:309. 最佳买卖股票时机含冷冻期(python)
LeetCode:309. 最佳买卖股票时机含冷冻期(python)给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3...原创 2019-09-17 09:08:19 · 722 阅读 · 0 评论 -
LeetCode:188. 买卖股票的最佳时机 IV(python)
LeetCode:188. 买卖股票的最佳时机 IV(python)给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [2,4,1], k = 2输出: 2解释: 在第 1 天 (股票价格 = 2) 的时候买入...原创 2019-09-17 09:07:35 · 990 阅读 · 2 评论 -
LeetCode:2. 两数相加(python)
LeetCode:2. 两数相加(python)给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -&...原创 2019-09-10 11:02:37 · 386 阅读 · 0 评论 -
LeetCode:206. 反转链表(python)
LeetCode:206. 反转链表(python)反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?LeetCode 链接思路:迭代记录 pre,cur,nex 指针进行翻转链表方向和迭...原创 2019-09-10 10:03:12 · 596 阅读 · 0 评论 -
LeetCode:26. 删除排序数组中的重复项
LeetCode:26. 删除排序数组中的重复项给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超...原创 2019-09-08 10:18:00 · 509 阅读 · 0 评论 -
LeetCode:20. 有效的括号
LeetCode:20. 有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。LeetCode 链接思路:栈注意:空字符串返回 True附代码(Python):class Solution: def i...原创 2019-09-08 10:18:10 · 246 阅读 · 0 评论 -
LeetCode:16. 最接近的三数之和
LeetCode:16. 最接近的三数之和给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:nums = [-1,2,1,-4],target = 1与 target 最接近的三个数的和为 2。(-1 + 2 + 1 = 2)。LeetCode...原创 2019-09-08 10:18:21 · 242 阅读 · 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]]...原创 2019-09-08 10:18:30 · 174 阅读 · 0 评论 -
LeetCode:14. 最长公共前缀
LeetCode:14. 最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。附代码(Python...原创 2019-09-08 10:18:39 · 161 阅读 · 0 评论 -
LeetCode:8. 字符串转换整数 (atoi)
LeetCode:8. 字符串转换整数 (atoi)请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效...原创 2019-09-08 10:18:49 · 212 阅读 · 0 评论 -
LeetCode:5. 最长回文子串
LeetCode:5. 最长回文子串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例2:输入: “cbbd”输出: “bb”LeetCode链接思路:Manacher算法,确定以 pos 为中心的最长回文子串后,可更方便的计算 pos 右侧字...原创 2019-09-03 15:12:55 · 234 阅读 · 0 评论 -
LeetCode:4. 寻找两个有序数组的中位数
LeetCode:4. 寻找两个有序数组的中位数给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]...原创 2019-09-03 10:18:15 · 324 阅读 · 3 评论 -
LeetCode:11. 盛最多水的容器
LeetCode:11. 盛最多水的容器给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。LeetCode 链接分析:距离越远,盛水越多盛水量...原创 2019-09-08 10:17:21 · 218 阅读 · 0 评论 -
LeetCode:486. 预测赢家(python)
LeetCode:486. 预测赢家给定一个表示分数的非负整数数组。 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端拿取分数,然后玩家1拿,……。每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。给定一个表示分数的数组,预测玩家1是否会成为赢家。你可以假设每个玩家的玩法都会使他的分数最大化。示例 1:...原创 2019-09-09 11:08:16 · 730 阅读 · 0 评论 -
LeetCode:43. 字符串相乘(python)
LeetCode:43. 字符串相乘(python)给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例1:输入: num1 = “2”, num2 = “3”输出: “6”示例2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2...原创 2019-09-10 08:55:12 · 315 阅读 · 0 评论 -
LeetCode:88. 合并两个有序数组(python)
LeetCode:88. 合并两个有序数组(python)定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = ...原创 2019-09-10 08:46:55 · 432 阅读 · 0 评论 -
LeetCode:59. 螺旋矩阵 II(python)
LeetCode:59. 螺旋矩阵 II(python)给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]LeetCode 链接思路:设置顺时针方向遍历矩阵,根据边界和是否访问过该节点来更新方向附代码(Python):...原创 2019-09-09 18:13:02 · 658 阅读 · 0 评论 -
LeetCode:54. 螺旋矩阵(python)
LeetCode:54. 螺旋矩阵(python)给定一个包含 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...原创 2019-09-09 17:44:54 · 1937 阅读 · 0 评论 -
LeetCode:217. 存在重复元素(python)
LeetCode:217. 存在重复元素(python)给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出:...原创 2019-09-09 16:43:17 · 293 阅读 · 1 评论 -
LeetCode:238. 除自身以外数组的乘积(python)
LeetCode:238. 除自身以外数组的乘积(python)给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数...原创 2019-09-09 16:27:37 · 482 阅读 · 0 评论 -
LeetCode:557. 反转字符串中的单词 III(python)
LeetCode:557. 反转字符串中的单词 III(python)给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: “Let’s take LeetCode contest”输出: “s’teL ekat edoCteeL tsetnoc”注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。LeetC...原创 2019-09-09 15:09:45 · 648 阅读 · 0 评论 -
LeetCode:344. 反转字符串(python)
LeetCode:344. 反转字符串(python)编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l...原创 2019-09-09 14:51:02 · 147 阅读 · 0 评论 -
LeetCode:63. 不同路径 II(python)
LeetCode:63. 不同路径 II(python)一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超...原创 2019-09-23 10:55:34 · 854 阅读 · 0 评论