LeetCode算法
guyu1003
这个作者很懒,什么都没留下…
展开
-
Python版-LeetCode 学习:5. 最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindromic-substring方法1:动态规划法class Solution: def longestPalindrome(self, s: str) -> s..原创 2020-08-12 23:19:57 · 193 阅读 · 0 评论 -
Python版-LeetCode 学习:1518. 换酒问题
小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒。你购入了 numBottles 瓶酒。如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的。请你计算 最多 能喝到多少瓶酒。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/water-bottles方法1:除法解法class Solution: def numWaterBottles(self, numBottles: int, numExchange: .原创 2020-08-07 14:57:23 · 474 阅读 · 0 评论 -
Python版-LeetCode 学习:300. 最长上升子序列
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是[2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为O(n2) 。进阶: 你能将算法的时间复杂度降低到O(n log n) 吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-incre...原创 2020-08-06 21:13:09 · 1637 阅读 · 0 评论 -
Python版-LeetCode 学习:518. 零钱兑换 II
给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。示例 1:输入: amount = 5, coins = [1, 2, 5]输出: 4解释: 有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+15=1+1+1+1+1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/coin-change-2方法1: 动态规划class Solution: ..原创 2020-08-04 22:54:59 · 742 阅读 · 0 评论 -
Python版-LeetCode 学习:887. 鸡蛋掉落
你将获得K个鸡蛋,并可以使用一栋从1到N共有 N层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层F ,满足0 <= F <= N 任何从高于 F的楼层落下的鸡蛋都会碎,从F楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层X扔下(满足1 <= X <= N)。你的目标是确切地知道 F 的值是多少。无论 F 的初始值如何,你确定 F 的值的最小移动次数是多少...原创 2020-07-30 11:50:47 · 285 阅读 · 0 评论 -
Python版-LeetCode 学习:打家劫舍(, II,III)
198. 打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1: 输入:[1,2,3,1] 输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 +...原创 2020-07-21 11:28:54 · 242 阅读 · 0 评论 -
Python版-LeetCode 学习:买卖股票的最佳时机(121,122,123,188,309,714)
买卖股票的最佳时机 交易次数K=1给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1: 输入: [7,1,5,3,6,4] 输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;...原创 2020-07-19 16:33:20 · 180 阅读 · 0 评论 -
Python版-LeetCode 学习:567. 字符串的排列
给定两个字符串s1和s2,写一个函数来判断 s2 是否包含 s1的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。示例1: 输入: s1 = "ab" s2 = "eidbaooo" 输出: True解释: s2 包含 s1 的排列之一 ("ba").示例2: 输入: s1= "ab" s2 = "eidboaoo" 输出: False来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permuta...原创 2020-07-17 22:05:45 · 557 阅读 · 0 评论 -
Python版-LeetCode 学习:3. 无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1: 输入: "abcabcbb" 输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters方法1:class Solution: def lengthOfLongestSu...原创 2020-07-17 20:42:29 · 152 阅读 · 0 评论 -
Python版-LeetCode 学习:438. 找到字符串中所有字母异位词
给定一个字符串s和一个非空字符串p,找到s中所有是p的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串s和 p的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。不考虑答案输出的顺序。示例1:输入:s: "cbaebabacd" p: "abc"输出:[0, 6]解释:起始索引等于 0 的子串是 "cba", 它是 "abc" 的字母异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的字母异位词...原创 2020-07-17 19:20:08 · 768 阅读 · 0 评论 -
Python版-LeetCode 学习:76. 最小覆盖子串
给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。示例:输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC"说明:如果 S 中不存这样的子串,则返回空字符串 ""。如果 S 中存在这样的子串,我们保证它是唯一的答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-window-substring方法1:该方法的大致思想是:(1.原创 2020-07-17 15:01:38 · 1375 阅读 · 1 评论 -
Python版-LeetCode 学习:34. 在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是O(log n) 级别。 如果数组中不存在目标值,返回[-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-elem...原创 2020-07-15 09:28:18 · 500 阅读 · 0 评论 -
Python版-LeetCode 学习:752. 打开转盘锁
你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 。每个拨轮可以自由旋转:例如把 '9' 变为'0','0' 变为 '9' 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 '0000' ,一个代表四个拨轮的数字的字符串。列表 deadends 包含了一组死亡数字,一旦拨轮的数字和列表里的任何一个元素相同,这个锁将会被永久锁定,无法再被旋转。字符串 target 代表可以解锁的...原创 2020-07-12 10:47:44 · 391 阅读 · 0 评论 -
Python版-LeetCode 学习:111. 二叉树的最小深度
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree方法1:BFS算法,从roo...原创 2020-07-11 19:04:53 · 342 阅读 · 0 评论 -
Python版-LeetCode 学习:46. 全排列
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations方法1:class Solution: def permute(self, nums: List[int]) -> L...原创 2020-07-10 17:03:44 · 765 阅读 · 0 评论 -
Python版-LeetCode 学习:322 零钱兑换问题
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。说明:你可以认为每种硬币的数量是无限的。链接:https://leetcode-cn.com/problems/coin-change多种方法的思考:方法1:递归class Solution: def coinChange(self, coins: List[int], amount: int) -> int..原创 2020-07-07 15:57:03 · 1427 阅读 · 1 评论 -
Python版-LeetCode 学习:无重复字符的最长子串
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度...原创 2020-07-02 15:40:21 · 200 阅读 · 0 评论