![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
文章平均质量分 72
leetcode
mingchen_peng
这个作者很懒,什么都没留下…
展开
-
动态规划之子序列(三)
最长回文子序列、回文子串、编辑距离原创 2024-03-31 22:49:30 · 960 阅读 · 0 评论 -
动态规划之子序列(二)
不想交的线、不同的子序列、最大子序和、判断子序列原创 2024-03-31 14:15:16 · 687 阅读 · 0 评论 -
leetcode 栈和队列1
你只能使用标准的栈操作 – 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)。// 返回 false。push(x) – 将一个元素放入队列的尾部。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。pop() – 从队列首部移除元素。原创 2024-03-21 20:02:31 · 263 阅读 · 0 评论 -
leetcode-图专题系列
课程表原创 2024-03-18 20:57:18 · 384 阅读 · 0 评论 -
leetcode 动态规划(单词拆分)
139.单词拆分力扣题目链接(opens new window)给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。原创 2024-01-13 22:01:45 · 1100 阅读 · 0 评论 -
leetcode 动态规划(爬楼梯、零钱兑换、完全平方数)
卡码网:57. 爬楼梯(opens new window)假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬至多m (1 <= m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。输入描述:输入共一行,包含两个正整数,分别表示n, m输出描述:输出一个整数,表示爬到楼顶的方法数。输入示例:3 2输出示例:3提示:当 m = 2,n = 3 时,n = 3 这表示一共有三个台阶,m = 2 代表你每次可以爬一个台阶或者两个台阶。原创 2024-01-12 20:12:21 · 1221 阅读 · 0 评论 -
leetcode动态规划(零钱兑换II、组合总和 Ⅳ)
如果把遍历nums(物品)放在外循环,遍历target的作为内循环的话,举一个例子:计算dp[4]的时候,结果集只有 {1,3} 这样的集合,不会有{3,1}这样的集合,因为nums遍历放在外层,3只能出现在1后面!所有可能的组合为: (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2, 1, 1) (2, 2) (3, 1)因为递推公式dp[i] += dp[i - nums[j]]的缘故,dp[0]要初始化为1,这样递归其他dp[i]的时候才会有数值基础。原创 2024-01-11 22:31:39 · 1085 阅读 · 0 评论 -
leetcode 动态规划(最后一块石头的重量II、目标和、一和零)
本题其实和416. 分割等和子集 (opens new window)几乎是一样的,只是最后对dp[target]的处理方式不同。分割等和子集 (opens new window)相当于是求背包是否正好装满,而本题是求背包最多能装多少。for stone in stones: # 遍历物品for j in range(target, stone - 1, -1): # 遍历背包(简化版)二维DP版# 创建二维dp数组,行数为石头的数量加1,列数为target加1。原创 2024-01-10 21:20:34 · 994 阅读 · 0 评论 -
动态规划(分割等和子集)
题目难易:中等给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。原创 2024-01-09 17:15:15 · 966 阅读 · 0 评论 -
动态规划(整数拆分、不同的二叉搜索树)
那么从1遍历j,比较(i - j) * j和dp[i - j] * j 取最大的。从递归公式上来讲,dp[以j为头结点左子树节点数量] * dp[以j为头结点右子树节点数量] 中以j为头结点左子树节点数量为0,也需要dp[以j为头结点左子树节点数量] = 1, 否则乘法的结果就都变成0了。j的结束条件是 j < i - 1 ,其实 j < i 也是可以的,不过可以节省一步,例如让j = i - 1,的话,其实在 j = 1的时候,这一步就已经拆出来了,重复计算,所以 j < i - 1。原创 2024-01-08 20:52:43 · 747 阅读 · 0 评论 -
动态规划(不同路径1,不同路径2,整数拆分)
力扣题目链接(opens new window)一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 2, n = 3输出:3解释: 从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向右 -> 向下向右 -> 向下 -> 向右。原创 2024-01-06 16:16:30 · 948 阅读 · 0 评论 -
leetcode 动态规划(斐波那契数列、 爬楼梯、使用最小花费爬楼梯)
斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给你n ,请计算 F(n)。原创 2024-01-05 09:25:57 · 509 阅读 · 0 评论 -
leetcode贪心(单调递增的数字、监控二叉树)
给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。(当且仅当每个相邻位数上的数字 x 和 y 满足 x原创 2024-01-04 08:20:08 · 490 阅读 · 0 评论 -
leetcode贪心(无重叠区间、划分字母区间、合并区间)
给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意: 可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2:输入: [ [1,2], [1,2], [1,2] ]输出: 2解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。原创 2024-01-03 09:57:33 · 438 阅读 · 0 评论 -
leetcode 贪心(柃檬水找零、根据身高重建队列、引爆气球)
在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false。示例 1:输入:[5,5,5,10,20]输出:true解释:前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。原创 2024-01-02 08:15:16 · 757 阅读 · 0 评论 -
leetcode 贪心(分发糖果、K次取反后最大化的数组和、加油站)
给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i。以这种方式修改数组后,返回数组可能的最大和。示例 1:输入:A = [4,2,3], K = 1输出:5解释:选择索引 (1,) ,然后 A 变为 [4,-2,3]。示例 2:输入:A = [3,-1,0,2], K = 3输出:6解释:选择索引 (1, 2, 2) ,然后 A 变为 [3,1,0,2]。原创 2024-01-01 09:34:06 · 900 阅读 · 0 评论 -
leetcode 贪心(买卖股票2、跳跃游戏)
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4。原创 2023-12-30 19:52:10 · 334 阅读 · 0 评论 -
leetcode贪心(最大子序列和、分发饼干、摆动序列)
455.分发饼干假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例 1:输入: g = [1,2,3], s = [1,1]原创 2023-12-29 16:44:16 · 468 阅读 · 0 评论 -
leetcode回溯(N皇后、解数独)
力扣题目链接(opens new window)n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例 1:输入:n = 4输出:[[“.Q…”,“…Q”,“Q…”,“…Q.”],[“…Q.”,“Q…”,“…Q”,“.Q…”]]原创 2023-12-28 20:07:57 · 346 阅读 · 0 评论 -
leetcode递增子序列、排列
给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。示例:输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]说明:给定数组的长度不会超过15。数组中的整数范围是 [-100,100]。给定数组中可能包含重复数字,相等的数字应该被视为递增的一种情况。原创 2023-12-27 20:50:37 · 438 阅读 · 0 评论 -
leetcode 复原ip、子集
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效的 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效的 IP 地址。示例 1:输入:s = “25525511135”原创 2023-12-26 20:04:21 · 428 阅读 · 0 评论 -
leetcode 组合、分割字符串
力扣题目链接(opens new window)给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。原创 2023-12-25 21:03:04 · 383 阅读 · 0 评论 -
leetcode 回溯(组合、电话号码)
找出所有相加之和为 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]]原创 2023-12-23 21:46:21 · 422 阅读 · 0 评论 -
leetcode 组合(回溯)
组合、回溯原创 2023-12-22 15:31:11 · 366 阅读 · 0 评论 -
leetcode 二叉树修剪、有序数组转二叉树、累加树
力扣题目链接(opens new window)给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L)。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。原创 2023-12-21 19:44:23 · 329 阅读 · 0 评论 -
leecode二叉搜索树最近公共祖先、添加节点、删除节点
力扣题目链接(opens new window)给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。原创 2023-12-20 22:18:12 · 368 阅读 · 0 评论 -
leetcode 二叉树众数、最小绝对差、最近公共祖先
给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。示例:提示:树中至少有 2 个节点。原创 2023-12-19 20:59:41 · 347 阅读 · 0 评论 -
leetcode 最大二叉树、搜索树相关题
给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。通过给定的数组构建最大二叉树,并且输出这个树的根节点。示例 :654.最大二叉树提示:给定的数组的大小在 [1, 1000] 之间。617.合并二叉树给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。原创 2023-12-18 20:48:20 · 351 阅读 · 1 评论 -
leetcode二叉树5
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。中序遍历 inorder = [9,3,15,20,7]给定一个二叉树,在树的最后一行找到最左边的值。根据一棵树的中序遍历与后序遍历构造二叉树。说明: 叶子节点是指没有子节点的节点。(版本一)递归法 + 回溯。(版本二) 递归 + 精简。(版本二) 递归 + 精简。(版本二)递归法+精简。原创 2023-12-16 22:24:01 · 40 阅读 · 1 评论 -
leetcode二叉树系列求对称、求最小、最大深度
leetcode二叉树系列求对称、求最小、最大深度原创 2023-12-14 20:57:41 · 42 阅读 · 1 评论 -
leetcode二叉树中层序遍历和翻转二叉树
leetcode二叉树中层序遍历和翻转二叉树原创 2023-12-13 21:12:21 · 54 阅读 · 1 评论 -
leetcode 前中后序递归遍历
leetcode 前中后序递归遍历原创 2023-12-12 10:09:23 · 313 阅读 · 0 评论 -
leetcode栈与队列3
leetcode ,347前k个高频元素,239. 滑动窗口最大值原创 2023-12-11 13:43:44 · 37 阅读 · 1 评论 -
leetcode 栈与队列2
leetcode 栈和队列原创 2023-12-09 07:55:38 · 24 阅读 · 0 评论 -
leetcode用栈模拟队列,队列模拟栈
栈和队列原创 2023-12-08 10:40:44 · 26 阅读 · 0 评论 -
leetcode字符串kmp相关提
字符串kmp算法原创 2023-12-07 18:39:54 · 260 阅读 · 1 评论 -
leetcode字符串1
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]原创 2023-12-06 10:18:23 · 824 阅读 · 1 评论 -
leetcode哈希结构
力扣题目链接(opens new window)给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500。所有整数的范围在 -2^28 到 2^28 - 1 之间,最终结果不会超过 2^31 - 1。原创 2023-12-05 09:55:16 · 25 阅读 · 0 评论 -
leetcode哈希结构
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true示例 2: 输入: s = “rat”, t = “car” 输出: false说明: 你可以假设字符串只包含小写字母。原创 2023-12-04 20:06:26 · 28 阅读 · 0 评论 -
leetcode链表
力扣题目链接(opens new window)题意:删除链表中等于给定值 val 的所有节点。示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]示例 2: 输入:head = [], val = 1 输出:[]示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]原创 2023-12-01 19:35:43 · 62 阅读 · 1 评论