
LeetCode
我是京城小白
这个作者很懒,什么都没留下…
展开
-
HJ61 放苹果
牛客地址:放苹果'''放苹果分为两种情况,一种是有盘子为空,一种是每个盘子上都有苹果。令(m,n)表示将m个苹果放入n个盘子中的摆放方法总数。1.假设有一个盘子为空,则(m,n)问题转化为将m个苹果放在n-1个盘子上,即求得(m,n-1)即可2.假设所有盘子都装有苹果,则每个盘子上至少有一个苹果,即最多剩下m-n个苹果,问题转化为将m-n个苹果放到n个盘子上,即求(m-n,n)'''def f(m,n): if m<0 or n<0: return .原创 2022-05-10 23:54:01 · 162 阅读 · 0 评论 -
55. 跳跃游戏
思路参考:力扣https://leetcode-cn.com/problems/jump-game/solution/pythonji-bai-97kan-bu-dong-ni-chui-wo-by-mo-lan-4/代码:class Solution: def canJump(self, nums: List[int]) -> bool: max_dis = 0 for inx, value in enumerate(nums): ...原创 2021-10-06 12:48:17 · 266 阅读 · 0 评论 -
740. 删除并获得点数
和《打家劫舍》比较相像,思路参考:力扣https://leetcode-cn.com/problems/delete-and-earn/solution/zhe-xiao-tou-you-lai-qiang-jie-liao-ta-z-w29x/代码:class Solution: def deleteAndEarn(self, nums: List[int]) -> int: nums_uniq_list = [] char_sum...原创 2021-10-06 12:12:07 · 128 阅读 · 0 评论 -
84. 柱状图中最大的矩形
https://leetcode-cn.com/problems/largest-rectangle-in-histogram/方案:https://leetcode-cn.com/problems/largest-rectangle-in-histogram/solution/84-by-ikaruga/class Solution: def largestRectangleArea(self, heights: List[int]) -> int: .原创 2021-01-03 14:53:07 · 102 阅读 · 0 评论 -
2. 两数相加
class Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode* head = new ListNode(-1); auto* tail = head; int carry = 0; while (l1 || l2 || carry){ int sum = (l1? l1->val:0...原创 2020-11-25 23:59:55 · 94 阅读 · 0 评论 -
1. 两数之和 C++
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { // 定义返回格式 unordered_map<int, int> hashtable; // 定义字典 for (int i=0; i < nums.size(); ++i){ auto it = hashtable.find(t...原创 2020-11-24 23:20:36 · 630 阅读 · 1 评论 -
97. 交错字符串
class Solution: def isInterleave(self, s1: str, s2: str, s3: str) -> bool: len1=len(s1) len2=len(s2) len3=len(s3) if (len1+len2 != len3): return False dp=[[False]*(len2+1) for i in ran...原创 2020-08-13 13:34:37 · 117 阅读 · 0 评论 -
54. 螺旋矩阵
题目:方案python 代码实现class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: if not matrix or not matrix[0]: return list() rows, columns = len(matrix), len(matrix[0]) ..原创 2020-08-11 11:02:38 · 125 阅读 · 0 评论 -
1402. 做菜顺序
【思路】贪心 越往后乘积越大,越大的数应该放在前面,所以先排个序 从前面一个一个加入,每新加一个数,之前加过的所有数再多加一遍【代码】class Solution: def maxSatisfaction(self, satisfaction: List[int]) -> int: satisfaction.sort(reverse=True) result = 0 cur_sum = 0 ...原创 2020-08-03 21:13:35 · 238 阅读 · 0 评论 -
72 编辑距离
【思路】【代码】class Solution: def minDistance(self, word1: str, word2: str) -> int: m = len(word1) # 5 n = len(word2) # 3 dp = [[0] * (n+1) for _ in range(m+1)] # 第一列 for i in range(1, m+1): ...原创 2020-08-03 20:47:24 · 111 阅读 · 0 评论 -
【Leet-Code】75. 颜色分类
【题目】【解题思路】用三个指针(p0, p2 和curr)来分别追踪0的最右边界,2的最左边界和当前考虑的元素。本解法的思路是沿着数组移动 curr 指针,若nums[curr] = 0,则将其与 nums[p0]互换;若 nums[curr] = 2 ,则与 nums[p2]互换。class Solution: def sortColors(self, nums: List[int]) -> None: """ Do n...原创 2020-07-08 23:09:31 · 194 阅读 · 0 评论 -
【Leet-Code】48. 旋转图像
【题目】【解题思路】采用分层来进行平移的方式,将矩阵的每一层都分开进行旋转,比如5*5的矩阵可以分为3层。旋转的时候,每四个矩阵块作为一组进行相应的旋转。可以看出,第二次旋转的时候比第一次旋转偏移了一格,这里我们使用 add 变量来记录矩阵块的偏移量,首先不考虑偏移量的时候写出左上角的坐标为(pos1,pos1),右上角的坐标为(pos1,pos2),左下角的坐标为(pos2,pos1),右下角的坐标为(pos2,pos2),则能够写出偏移之后对应的坐标。..原创 2020-07-07 15:55:47 · 199 阅读 · 0 评论 -
【Leet-Code】45. 跳跃游戏 II
【解题思路】「贪心」地进行正向查找,每次找到可到达的最远位置,就可以在线性时间内得到最少的跳跃次数。例如,对于数组 [2,3,1,2,4,2,3],初始位置是下标 0,从下标 0 出发,最远可到达下标 2。下标 0 可到达的位置中,下标 1 的值是 3,从下标 1 出发可以达到更远的位置,因此第一步到达下标 1。从下标 1 出发,最远可到达下标 4。下标 1 可到达的位置中,下标 4 的值是 4 ,从下标 4 出发可以达到更远的位置,因此第二步到达下标 4。在具体的实现中...原创 2020-07-07 00:39:42 · 197 阅读 · 0 评论 -
【Leet-Code】41. 缺失的第一个正数
【题目】给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。【题目解析】飞机对号入座,原地O(N)解法!class Solution: def firstMissingPositive(self, nums: List[int]) -> int: for a in nums: #遍历每个座位,记当前坐着a号乘客 while 0<a<=len(nums) and a!=nums[a-1]: #乘客a是.原创 2020-07-06 13:59:43 · 150 阅读 · 0 评论 -
【LeetCode】35. 搜索插入位置
【题目解析】class Solution: def searchInsert(self, nums: List[int], target: int) -> int: if target < nums[0]: return 0 elif target > nums[-1]: return len(nums) l = 0 r = len(nums...原创 2020-07-05 16:31:50 · 89 阅读 · 0 评论 -
【LeetCode】34. 在排序数组中查找元素的第一个和最后一个位置
【题目解析】class Solution: def searchRange(self, nums: List[int], target: int) -> List[int]: def left_index(nums, target): l = 0 r = len(nums) - 1 mid = l + (r - l + 1) //2 tag_value =...原创 2020-07-05 15:22:24 · 100 阅读 · 0 评论 -
【Leet-Code】32. 最长有效括号
【题目解析】对所有的 “(” 符号,分割连续子串的“)” 符号建立索引。class Solution: def longestValidParentheses(self, s: str) -> int: if not s: return 0 index_list = [-1] max_length = 0 for i, c in enumerate(s): ...原创 2020-07-05 14:27:36 · 192 阅读 · 0 评论 -
【Leet-Code】30. 串联所有单词的子串
【题目解析】1. 使用python中的Counter函数,统计words中单词出现的次数;【例如示例1:Counter({'foo': 1, 'bar': 1})】2. 每次位移一个字母,在s中截取长度等于 “words 中全部单词的长度”的字符串(假设为C)。由于words中的每个单词长度相同(假设为L),因此将C分为 C / L = len(words) 个词;【例如示例1:开始索引为0时,往后取6个字母:barfoo;然后将 barfoo 分成2个词:[bar,foo]...原创 2020-07-05 11:34:03 · 200 阅读 · 0 评论 -
【Leet-Code】29. 两数相除
【题目解析】对【除数】进行倍增的方式,与【被除数】比较。举个例子:11 除以 3 。首先11比3大,结果至少是1; 然后我让3翻倍,就是6,发现11比3翻倍后还要大,那么结果就至少是2; 那我让这个6再翻倍,得12,11不比12大,退出此轮【倍增】,此轮得到【商】的结果为2。 接下来让11减去刚才最后一次的结果6,剩下5,接下来我们计算5是3的多少倍。此时递归形式出现了,即重复1,2,3步骤。class Solution: def divide...原创 2020-07-05 00:22:59 · 155 阅读 · 0 评论 -
【Leet-Code】24. 两两交换链表中的节点
【解题思路】记录奇偶位置,交换奇偶值即可。# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def swapPairs(self, head: ListNode) -> ListNode: result...原创 2020-07-04 17:59:10 · 125 阅读 · 0 评论 -
【Leet-Code】19. 删除链表的倒数第N个节点
【题目解析】采取双重遍历肯定是可以解决问题的,但题目要求我们一次遍历解决问题,那我们的思路得发散一下。我们可以设想假设设定了双指针 slow和 fast 的话,当 fast 指向末尾的 NULL,slow与 fast 之间相隔的元素个数为 n 时,那么删除掉 slow的下一个指针就完成了要求。设置虚拟节点 result_ListNode 指向 head; 设定双指针 slow和 fast ,初始都指向虚拟节点 result_ListNode; 移动 fast ,直到 sl...原创 2020-07-04 15:39:30 · 3436 阅读 · 0 评论 -
【Leet-Code】6. Z 字形变换
【题目】【方案】示例2中共产生4行数据,定义 index 变量,用于控制每次取数之后应该放到哪一行。0 0 01 1 1 1 12 2 2 2 23 3 3class Solution: def convert(self, s: str, n...原创 2020-07-04 12:41:56 · 106 阅读 · 0 评论 -
【Leet-Code】2. 两数相加
给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807# Definition for singly-...原创 2020-07-03 00:33:06 · 129 阅读 · 0 评论 -
【LeetCode】279. 完全平方数
欢迎关注公众号 pythonhonor,一起学习交流。官方链接给定正整数n,找到若干个完全平方数(比如1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.方案:...原创 2020-04-12 16:27:27 · 336 阅读 · 0 评论 -
【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示例 2:输入: amount = 3, coins = [2]输出...原创 2020-04-09 23:59:40 · 346 阅读 · 0 评论 -
【LeetCode】322. 零钱兑换
官方链接给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。示例1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出...原创 2020-04-09 21:24:02 · 151 阅读 · 0 评论 -
【LeetCode】1201. 丑数 III
官方链接请你帮忙设计一个程序,用来找出第n个丑数。丑数是可以被a或b或 c整除的 正整数。示例 1:输入:n = 3, a = 2, b = 3, c = 5输出:4解释:丑数序列为 2, 3, 4, 5, 6, 8, 9, 10... 其中第 3 个是 4。示例 2:输入:n = 4, a = 2, b = 3, c = 4输出:6解释:丑数序列...原创 2020-04-09 19:48:09 · 618 阅读 · 0 评论 -
【LeetCode】313. 超级丑数
官方链接编写一段程序来查找第 n 个超级丑数。超级丑数是指其所有质因数都是长度为k的质数列表primes中的正整数。示例:输入: n = 12, primes = [2,7,13,19]输出: 32解释: 给定长度为 4 的质数列表 primes = [2,7,13,19],前 12 个超级丑数序列为:[1,2,4,7,8,13,14,16,19,26,28,3...原创 2020-04-09 13:53:52 · 130 阅读 · 0 评论 -
【LeetCode】49. 丑数
官方链接我们把只包含因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明:1是丑数。n不超过1690。注意:本题与主站 264 题相同:https://leetcode-cn.co...原创 2020-04-09 13:28:11 · 134 阅读 · 0 评论 -
【LeetCode】154. 寻找旋转排序数组中的最小值 II
官方链接假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7] 可能变为[4,5,6,7,0,1,2])。请找出其中最小的元素。注意数组中可能存在重复的元素。示例 1:输入: [1,3,5]输出: 1示例2:输入: [2,2,2,0,1]输出: 0说明:这道题是寻找旋转排序数组中的最小值的延...原创 2020-04-09 01:12:54 · 117 阅读 · 0 评论 -
【LeetCode】153. 寻找旋转排序数组中的最小值
官方链接假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7] 可能变为[4,5,6,7,0,1,2])。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0方案:二分法参考:一文解决 4...原创 2020-04-09 00:28:12 · 89 阅读 · 0 评论 -
【LeetCode】81. 搜索旋转排序数组 II
官方链接假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,0,1,2,2,5,6]可能变为[2,5,6,0,0,1,2])。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回true,否则返回false。示例1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例2:输...原创 2020-04-08 20:17:26 · 118 阅读 · 0 评论 -
【LeetCode】33. 搜索旋转排序数组
官方链接假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是O(logn) 级别。示例 1:输入: nums = [4,...原创 2020-04-08 19:47:07 · 111 阅读 · 0 评论 -
【LeetCode】718. 最长重复子数组
官方链接给两个整数数组A和B,返回两个数组中公共的、长度最长的子数组的长度。示例 1:输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出: 3解释:长度最长的公共子数组是 [3, 2, 1]。说明:1 <= len(A), len(B) <= 10000 <= A[i], B[i] < 100方案:1....原创 2020-04-08 01:19:24 · 192 阅读 · 0 评论 -
【LeetCode】209. 长度最小的子数组
官方链接给定一个含有n个正整数的数组和一个正整数s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组[4,3]是该条件下的长度最小的连续子数组。进阶:如果你已经完成了O(n) 时间复杂度的解法, 请尝试O(n lo...原创 2020-04-08 00:09:10 · 110 阅读 · 0 评论 -
【LeetCode】3. 无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最...原创 2020-04-03 00:15:58 · 95 阅读 · 0 评论 -
【LeetCode】1. 两数之和
官方链接给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1...原创 2020-04-02 23:44:06 · 86 阅读 · 0 评论 -
【Leet Code】2. 两数相加
官网链接给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -...原创 2020-04-02 23:19:41 · 106 阅读 · 0 评论 -
【LeetCode】931. 下降路径最小和
官方链接给定一个方形整数数组A,我们想要得到通过 A 的下降路径的最小和。下降路径可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列。示例:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:12解释:可能的下降路径有:[1,4,7], [1,4,8], [1,5,7], [1,5,8], [1,5,9][...原创 2020-03-31 22:24:26 · 194 阅读 · 0 评论 -
【LeetCode】377. 组合总和 Ⅳ
官方链接给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。示例:nums = [1, 2, 3]target = 4所有可能的组合为:(1, 1, 1, 1)(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1)请注意,顺序不同的序列被视作不同的组合。因此输出为 7。方案:(1)...原创 2020-03-26 00:11:40 · 207 阅读 · 0 评论