动态规划
文章平均质量分 55
lulutoy
平凡人创造的能量条
展开
-
塔子哥的关注数-小红书2024笔试(codefun2000)
这天他又创建了一个新账号,他希望新账号的粉丝数恰好等于x。为此他可以向自己已有账号的粉丝们推荐自己的新账号,这样以来新账号就得到了之前粉丝的关注。他想知道,他最少需要在几个旧账号发“推荐新账号”的文章,可以使得他的新账号粉丝数恰好为x,除此以外,他可以最多从中选择一个账号多次发“推荐新账号”的文章。假设一个旧账号粉丝数为ai,如果仅推荐一次,那么新账号粉丝数增加⌊ai/2⌋,如果多以推荐,则粉丝数增加ai。第一行两个正整数n,x(1≤n,x≤100),分别表示塔子哥的旧账号个数,和新账号想要的粉丝数。原创 2024-07-22 11:40:04 · 234 阅读 · 0 评论 -
塔子哥的题解点赞方案-小红书2024笔试(codefun2000)
塔子哥写了 n 篇题解,编号从 1 到 n,但是塔子哥忘了每篇题解有多少人点赞了。现在他有如下两种信息:1、每篇题解的点赞量都为正数,且不超过 m。2、第 i 篇题解的点赞量和第 i+1 篇题解的点赞量的大小关系。在这些信息的条件下,所有题解的点赞量一共有多少种不同可能(答案对$10^9+7$取模)原创 2024-07-22 09:00:43 · 318 阅读 · 0 评论 -
塔子哥的数组-美团2023笔试(codefun2000)
当a数组存在多个相同元素(比如,a[i]等于a[j])时,构造b数组的方案个数是相同的,因为在构造b数组的第j个元素时,它的约束条件与构造b数组第i个元素的约束条件是一样的,因此,存在求解重复子问题,可以采用记忆化搜索避免重复搜索相同的答案。塔子哥有一个长度为 n 的数组 a ,现在他想要重新构造一个长度也为 n 的数组 b ,满足如下三个条件,就是塔子哥要构造的数组。第一行,一个正整数 n(1≤n≤100) ,表示数组 a 和 b 的大小。输出一个整数,表示构造出的不同的数组 b 的方案数,答案对。原创 2024-07-21 08:00:00 · 778 阅读 · 0 评论 -
01串的代价-美团2023笔试(codefun2000)
塔子哥有一个 01 串 s。每次操作可以将一个 1 修改为 0 或者一个 0 修改为 1。塔子哥不喜欢 01 串相邻字符相等,所以他要操作使得 01 串任意相邻字符不相等。对于一个 01 串,其权值为使得相邻字符不相等的最少操作次数。现在塔子哥想问你,对于给定的 s ,其所有子串的权值之和是多少。一个整数,表示一个 01 串的所有子串的权值之和是多少。一行,一个 01 串 s(∣s∣≤2000)。原创 2024-07-20 18:15:27 · 571 阅读 · 0 评论 -
121. 小红的区间翻转(卡码网周赛第二十五期(23年B站笔试真题))
小红拿到了两个长度为 n 的数组 a 和 b,她仅可以执行一次以下翻转操作:选择a数组中的一个区间[i, j],(i!例如,对于 a = [2,3,4,1,5,6],小红可以选择左闭右闭区间[2,4],数组 a 则变成[2,3,5,1,4,6]。小红希望操作后 a 数组和 b 数组完全相同。将 1 2 3 1 中的 2 3 进行翻转,得到 1 3 2 1。将 1 2 3 1 整个进行翻转,得到 1 3 2 1。第一行输入一个正整数 n,代表数组的长度;初始 a 数组和 b 数组必定不相同。原创 2024-07-13 21:28:43 · 735 阅读 · 0 评论 -
143. 最长同值路径(卡码网周赛第二十五期(23年B站笔试真题))
给定一个二叉树的 root ,返回最长的路径的长度,这个路径中的每节点具有相同值。这条路径可以经过也可以不经过根节点。两个节点之间的路径长度 由它们之间的边数表示。第二行包含 n 个字符串,空格隔开,数字的字符串代表该节点存在,并且值为数字,null 代表是一个空结点。树的节点数的范围是 [0,10^4] -1000原创 2024-07-12 10:48:00 · 433 阅读 · 0 评论 -
142. 两个字符串的最小 ASCII 删除总和(卡码网周赛第二十五期(23年B站笔试真题))
给定两个字符串 s1 和 s2(0原创 2024-07-11 22:07:59 · 368 阅读 · 0 评论 -
农场大亨-美团2023笔试(codefun2000)
塔子哥是一个喜欢种田类的游戏的人,他觉得这样的游戏可以让他体验到农民的乐趣,同时也可以锻炼他的经营能力。他最近在玩一个叫做“农场大亨”的游戏,这个游戏的目的是在有限的时间内赚尽可能多的钱。游戏中有 n 种作物,每种作物都有自己的特点,比如生长周期、种子成本、作物收益等。第 i 种作物从种植到作物成熟采摘需要 ti天时间,种植和采摘、卖出等操作不耗时间,成熟之前作物没有价值。如果塔子哥想要更换作物,他需要先把当前作物采摘卖出,然后再购买新的种子。塔子哥想知道,在这样的条件下,他最多能赚多少钱。原创 2024-07-10 08:32:32 · 441 阅读 · 0 评论 -
提瓦特商店-美团2023笔试(codefun2000)
塔子哥听说了这个促销活动后非常兴奋,他计划购买尽可能多的商品,同时也希望尽量少地花钱。第一个数字表示最多买几个商品,第二个数字表示在满足商品尽量多的前提下所花费的最少的钱数。第一个商品折扣价购入,第二个商品原价购入,可以获得最多的商品数量2个。于是塔子哥找到了你,希望你能帮助他计算出在这种情况下他可以购买的最多商品数量以及花费的最少钱数。1≤N≤100,1≤X≤5000,1≤Y≤50,每个商品原价和折扣价均介于[1,50]之间。接下来N行,每行两个整数,以空格分开,表示一个的原价和折扣价。原创 2024-07-05 22:52:11 · 275 阅读 · 0 评论 -
140. 好二叉树(卡码网周赛第二十四期(23年腾讯音乐笔试真题))
小红定义一个二叉树为“好二叉树”,当且仅当该二叉树所有节点的孩子数量为偶数(0 或者 2)。小红想知道,n(1原创 2024-07-04 22:38:17 · 529 阅读 · 0 评论 -
1312. 让字符串成为回文串的最少插入次数(leetcode)
给你一个字符串 s ,每一次操作你都可以在字符串的任意位置插入任意字符。解释:字符串 “zzazz” 已经是回文串了,所以不需要做任何插入操作。解释:插入 5 个字符后字符串变为 “leetcodocteel”。解释:字符串可变为 “mbdadbm” 或者 “mdbabdm”。请你返回让 s 成为回文串的 最少操作次数。「回文串」是正读和反读都相同的字符串。输入:s = “leetcode”输入:s = “zzazz”输入:s = “mbadm”s 中所有字符都是小写字母。原创 2024-07-02 12:02:20 · 321 阅读 · 0 评论 -
188. 买卖股票的最佳时机 IV(leetcode)
解释:在第 2 天 (股票价格 = 2) 的时候买入,在第 3 天 (股票价格 = 6) 的时候卖出, 这笔交易所能获得利润 = 6-2 = 4。随后,在第 5 天 (股票价格 = 0) 的时候买入,在第 6 天 (股票价格 = 3) 的时候卖出, 这笔交易所能获得利润 = 3-0 = 3。解释:在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2。输入:k = 2, prices = [3,2,6,5,0,3]原创 2024-07-02 12:00:22 · 284 阅读 · 0 评论 -
123. 买卖股票的最佳时机 III(leetcode)
解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4。随后,在第 7 天(股票价格 = 1)的时候买入,在第 8 天 (股票价格 = 4)的时候卖出,这笔交易所能获得利润 = 4-1 = 3。解释:在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3。输入:prices = [3,3,5,0,0,3,1,4]输入:prices = [1]原创 2024-07-02 11:58:14 · 910 阅读 · 0 评论 -
740. 删除并获得点数(leetcode)
每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] + 1 的元素。之后,再次删除 3 获得 3 个点数,再次删除 3 获得 3 个点数。删除 3 获得 3 个点数,接着要删除两个 2 和 4。之后,删除 2 获得 2 个点数。总共获得 6 个点数。删除 4 获得 4 个点数,因此 3 也被删除。输入:nums = [2,2,3,3,3,4]输入:nums = [3,4,2]总共获得 9 个点数。原创 2024-06-30 08:30:00 · 1521 阅读 · 0 评论 -
面试题 08.11. 硬币(leetcode)
给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)0原创 2024-06-30 09:00:00 · 276 阅读 · 0 评论 -
1186. 删除一次得到子数组最大和(leetcode)
换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只能删一次哦),(删除后)子数组中至少应当有一个元素,然后该子数组(剩下)的元素总和是所有子数组之中最大的。我们应该直接选择 [-1],或者选择 [-1, -1] 再从中删去一个 -1。解释:我们可以选出 [1, -2, 0, 3],然后删掉 -2,这样得到 [1, 0, 3],和最大。输入:arr = [-1,-1,-1,-1]输入:arr = [1,-2,-2,3]输入:arr = [1,-2,0,3]原创 2024-06-30 08:30:00 · 536 阅读 · 0 评论 -
1262. 可被三整除的最大和(leetcode)
解释:最后得到的子数组不能为空,所以我们不能选择 [-1] 并从中删去 -1 来得到 0。解释:选出数字 3, 6, 1 和 8,它们的和是 18(可被 3 整除的最大和)。我们应该直接选择 [-1],或者选择 [-1, -1] 再从中删去一个 -1。给你一个整数数组 nums,请你找出并返回能被三整除的元素 最大和。输入:arr = [-1,-1,-1,-1]输入:nums = [3,6,5,1,8]解释:我们直接选出 [3],这就是最大和。输入:arr = [1,-2,-2,3]原创 2024-06-30 08:30:00 · 587 阅读 · 0 评论 -
338. 比特位计数(leetcode)
给你一个整数 n ,对于 0原创 2024-06-30 08:00:00 · 232 阅读 · 0 评论 -
91. 解码方法(leetcode)
注意,消息不能分组为 (1 11 06) ,因为 “06” 不能映射为 “F” ,这是由于 “6” 和 “06” 在映射中并不等价。要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。解释:它可以解码为 “BZ” (2 26), “VF” (22 6), 或者 “BBF” (2 2 6)。解释:“06” 无法映射到 “F” ,因为存在前导零(“6” 和 “06” 并不等价)。解释:它可以解码为 “AB”(1 2)或者 “L”(12)。输入:s = “06”原创 2024-06-24 12:37:31 · 467 阅读 · 0 评论 -
96. 不同的二叉搜索树(leetcode)
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。原创 2024-06-28 08:30:00 · 229 阅读 · 0 评论 -
131. 分割回文串(leetcode)
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是。输出:[[“a”,“a”,“b”],[“aa”,“b”]]返回 s 所有可能的分割方案。输入:s = “aab”s 仅由小写英文字母组成。输入:s = “a”输出:[[“a”]]原创 2024-06-28 08:45:00 · 175 阅读 · 0 评论 -
1027. 最长等差数列(leetcode)
回想一下,nums 的子序列是一个列表 nums[i1], nums[i2], …< ik原创 2024-06-27 08:45:00 · 395 阅读 · 0 评论 -
376. 摆动序列(leetcode)
例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。相反,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。其中一个是 [1, 17, 10, 13, 10, 16, 8] ,各元素之间的差值为 (16, -7, 3, -3, 6, -8)。输入:nums = [1,17,5,10,13,15,10,5,16,8]原创 2024-06-27 08:00:00 · 629 阅读 · 0 评论 -
714. 买卖股票的最佳时机含手续费(leetcode)
给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格;如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。输入:prices = [1, 3, 2, 8, 4, 9], fee = 2。总利润: ((8 - 1) - 2) + ((9 - 4) - 2) = 8。输入:prices = [1,3,7,5,10,3], fee = 3。在此处卖出 prices[3] = 8。原创 2024-06-26 08:45:00 · 235 阅读 · 0 评论 -
516. 最长回文子序列(leetcode)
子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。解释:一个可能的最长回文子序列为 “bbbb”。解释:一个可能的最长回文子序列为 “bb”。输入:s = “bbbab”输入:s = “cbbd”s 仅由小写英文字母组成。原创 2024-06-26 08:30:00 · 122 阅读 · 0 评论 -
673. 最长递增子序列的个数(leetcode)
解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。解释: 最长递增子序列的长度是1,并且存在5个子序列的长度为1,因此输出5。给定一个未排序的整数数组 nums , 返回最长递增子序列的个数。输入:nums = [5,4,-1,7,8]注意 这个数列必须是 严格 递增的。输入: [1,3,5,4,7]输入: [2,2,2,2,2]原创 2024-06-26 09:00:00 · 240 阅读 · 0 评论 -
343. 整数拆分(leetcode)
给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。返回你可以获得的最大乘积。解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。解释: 2 = 1 + 1, 1 × 1 = 1。输入: n = 10。原创 2024-06-28 08:00:00 · 321 阅读 · 0 评论 -
120. 三角形最小路径和(leetcode)
每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1。输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。给定一个三角形 triangle ,找出自顶向下的最小路径和。输入:triangle = [[-10]]原创 2024-06-26 08:30:00 · 243 阅读 · 0 评论 -
97. 交错字符串(leetcode)
交错 是 s1 + t1 + s2 + t2 + s3 + t3 + …或者 t1 + s1 + t2 + s2 + t3 + s3 + …输入:s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbcbcac”输入:s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbbaccc”给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。输入:s1 = “”, s2 = “”, s3 = “”原创 2024-06-25 08:45:00 · 287 阅读 · 0 评论 -
416. 分割等和子集(leetcode)
给你一个 只包含正整数 的 非空 数组 nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。解释:数组可以分割成 [1, 5, 5] 和 [11]。解释:数组不能分割成两个元素和相等的子集。输入:nums = [1,5,11,5]输入:nums = [1,2,3,5]原创 2024-06-25 08:00:00 · 419 阅读 · 0 评论 -
1143. 最长公共子序列(leetcode)
给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的子序列是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。输入:text1 = “abcde”, text2 = “ace”输入:text1 = “abc”, text2 = “abc”输入:text1 = “abc”, text2 = “def”原创 2024-06-24 09:15:00 · 137 阅读 · 0 评论 -
279. 完全平方数(leetcode)
给你一个整数 n ,返回 和为 n 的完全平方数的最少数量。完全平方数是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。解释:12 = 4 + 4 + 4。解释:13 = 4 + 9。原创 2024-06-24 08:30:00 · 533 阅读 · 0 评论 -
63. 不同路径 II(leetcode)
机器人试图达到网格的右下角(在下图中标记为 “Finish”)。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]那么从左上角到右下角将会有多少条不同的路径?输入:obstacleGrid = [[0,1],[0,0]]obstacleGrid[i][j] 为 0 或 1。网格中的障碍物和空位置分别用 1 和 0 来表示。解释:3x3 网格的正中间有一个障碍物。原创 2024-06-23 09:00:00 · 315 阅读 · 0 评论 -
647. 回文子串(leetcode)
解释:6个回文子串: “a”, “a”, “a”, “aa”, “aa”, “aaa”给你一个字符串 s ,请你统计并返回这个字符串中回文子串的数目。子字符串 是字符串中的由连续字符组成的一个序列。解释:三个回文子串: “a”, “b”, “c”回文字符串 是正着读和倒过来读一样的字符串。输入:s = “abc”输入:s = “aaa”s 由小写英文字母组成。原创 2024-06-23 08:00:00 · 355 阅读 · 0 评论 -
221. 最大正方形(leetcode)
输入:matrix = [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内,找到只包含 ‘1’ 的最大正方形,并返回其面积。输入:matrix = [[“0”,“1”],[“1”,“0”]]matrix[i][j] 为 ‘0’ 或 ‘1’输入:matrix = [[“0”]]原创 2024-06-22 08:30:00 · 306 阅读 · 0 评论 -
152. 乘积最大子数组(leetcode)
给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。nums 的任何前缀或后缀的乘积都 保证 是一个 32-位 整数。解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。解释: 子数组 [2,3] 有最大乘积 6。输入: nums = [2,3,-2,4]输入: nums = [-2,0,-1]测试用例的答案是一个 32-位 整数。输出:1000000000。原创 2024-06-22 08:45:00 · 273 阅读 · 0 评论 -
718. 最长重复子数组(leetcode)
给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子数组的长度。输入:nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7]输入:nums1 = [0,0,0,0,0], nums2 = [0,0,0,0,0]解释:长度最长的公共子数组是 [3,2,1]。原创 2024-06-21 09:00:00 · 255 阅读 · 0 评论 -
518. 零钱兑换 II(leetcode)
给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0。假设每一种面额的硬币有无限个。输入:amount = 5, coins = [1, 2, 5]输入:amount = 10, coins = [10]输入:amount = 3, coins = [2]解释:只用面额 2 的硬币不能凑成总金额 3。题目数据保证结果符合 32 位带符号整数。coins 中的所有值 互不相同。原创 2024-06-21 09:00:00 · 294 阅读 · 0 评论 -
322. 零钱兑换(leetcode)
给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。输入:coins = [1, 2, 5], amount = 11。输入:coins = [2], amount = 3。输入:coins = [1], amount = 0。你可以认为每种硬币的数量是无限的。解释:11 = 5 + 5 + 1。原创 2024-06-20 08:45:00 · 514 阅读 · 0 评论 -
64. 最小路径和(leetcode)
给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输入:grid = [[1,2,3],[4,5,6]]解释:因为路径 1→3→1→1→1 的总和最小。说明:每次只能向下或者向右移动一步。原创 2024-06-21 08:00:00 · 104 阅读 · 0 评论