动态规划
文章平均质量分 70
动态规划
Sophia_fez
干啥啥不行,可爱第一名.jpg
展开
-
leetcode *813. 最大平均值和的分组(2022.11.28)
给定数组 nums 和一个整数 k。我们将给定的数组 nums 分成 最多 k 个相邻的非空子数组。分数 由每个子数组内的平均值的总和构成。2.前缀和数组 prefix 记录到 i 为止的和,那到平均值就是 prefix[i] / i。注意我们必须使用 nums 数组中的每一个数进行分组,并且分数不一定需要是整数。返回我们所能得到的最大 分数 是多少。答案误差在 10-6 内被视为是正确的。1.平均值和最大的分组的子数组数目必定是 k,证明参考官方题解。原创 2022-11-28 01:15:28 · 223 阅读 · 0 评论 -
leetcode *808. 分汤(2022.11.21)
我们可以发现,每次分配操作有 (4,0),(3,1),(2,2),(1,3) 四种,那么在一次分配中,汤 A 平均会被分配的份数期望为 E(A)=(4+3+2+1)×0.25=2.5,汤 B 平均会被分配的份数期望为 E(B)=(0+1+2+3)×0.25=1.5。首先,由于四种分配操作都是 25 的倍数,因此我们可以将 n 除以 25(如果有余数,则补 1),并将四种分配操作变为 (4,0),(3,1),(2,2),(1,3),且每种操作的概率均为 0.25。当两种类型的汤都分配完时,停止操作。原创 2022-11-21 00:27:21 · 291 阅读 · 1 评论 -
leetcode *799. 香槟塔(2022.11.20)
在倒第四杯后,第三层中间的玻璃杯盛放了一半的香槟,他两边的玻璃杯各自盛放了四分之一的香槟,如下图所示。从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了,任何溢出的香槟都会立刻等流量的流向左右两侧的玻璃杯。解释: 我们在顶层(下标是(0,0)倒了两杯香槟后,有一杯量的香槟将从顶层溢出,位于(1,0)的玻璃杯和(1,1)的玻璃杯平分了这一杯香槟,所以每个玻璃杯有一半的香槟。解释: 我们在顶层(下标是(0,0))倒了一杯香槟后,没有溢出,因此所有在顶层以下的玻璃杯都是空的。输出: 0.00000。原创 2022-11-20 22:33:48 · 80 阅读 · 0 评论 -
leetcode **805. 数组的均值分割(2022.11.14)
我们要将 nums 数组中的每个元素移动到 A 数组 或者 B 数组中,使得 A 数组和 B 数组不为空,并且 average(A) == average(B)。注意:对于数组 arr , average(arr) 是 arr 的所有元素的和除以 arr 长度。这题还要考虑怎么优化不超时,还不光是思路对了就能做出来= =如果可以完成则返回true , 否则返回 false。题解看到一半没看懂,放弃了= =给定你一个整数数组 nums。原创 2022-11-14 22:15:36 · 173 阅读 · 0 评论 -
leetcode *790. 多米诺和托米诺平铺(2022.11.12)
考虑这么一种平铺的方式:在第 i 列前面的正方形都被瓷砖覆盖,在第 i 列后面的正方形都没有被瓷砖覆盖(i 从 1 开始计数)。使用 dp[i][s] 表示平铺到第 i 列时,各个状态 s 对应的平铺方法数量。最后平铺到第 n 列时,上下两个正方形都被覆盖的状态 dp[n][3]对应的平铺方法数量就是总平铺方法数量。有两种形状的瓷砖:一种是 2 x 1 的多米诺形,另一种是形如 “L” 的托米诺形。初始时 dp[0][0]=0, dp[0][1]=0, dp[0][2]=0, dp[0][3]=1。原创 2022-11-14 22:05:09 · 80 阅读 · 0 评论 -
leetcode *787. K 站中转内最便宜的航班(2021.8.24)(待研究)
【题目】*787. K 站中转内最便宜的航班有 n 个城市通过一些航班连接。给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 pricei 抵达 toi。现在给定所有的城市和航班,以及出发城市 src 和目的地 dst,你的任务是找到出一条最多经过 k 站中转的路线,使得从 src 到 dst 的 价格最便宜 ,并返回该价格。 如果不存在这样的路线,则输出 -1。示例 1:输入: n = 3,原创 2021-08-24 10:45:41 · 69 阅读 · 0 评论 -
leetcode 551. 学生出勤记录 I(2021.8.17)& **552. 学生出勤记录 II(2021.8.18)
【题目】551. 学生出勤记录 I给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符:‘A’ : Absent,缺勤‘L’ : Late,迟到‘P’ : Present,到场如果一个学生的出勤记录中不超过一个’A’(缺勤)并且不超过两个连续的’L’(迟到),那么这个学生会被奖赏。你需要根据这个学生的出勤记录判断他是否会被奖赏。示例 1:输入: "PPALLP"输出...原创 2020-04-26 16:23:10 · 201 阅读 · 0 评论 -
leetcode *526. 优美的排列(2021.8.16)(待研究)
【题目】*526. 优美的排列假设有从 1 到 N 的 N 个整数,如果从这 N 个数字中成功构造出一个数组,使得数组的第 i 位 (1 <= i <= N) 满足如下两个条件中的一个,我们就称这个数组为一个优美的排列。条件:第 i 位的数字能被 i 整除i 能被第 i 位上的数字整除现在给定一个整数 N,请问可以构造多少个优美的排列?示例1:输入: 2输出: 2解释: 第 1 个优美的排列是 [1, 2]: 第 1 个位置(i=1)上的数字是1,1能被 i(i=1)整除原创 2021-08-16 14:26:09 · 68 阅读 · 0 评论 -
leetcode *576. 出界的路径数(2021.8.15)(待研究)
【题目】*576. 出界的路径数给你一个大小为 m x n 的网格和一个球。球的起始坐标为 [startRow, startColumn] 。你可以将球移到在四个方向上相邻的单元格内(可以穿过网格边界到达网格之外)。你 最多 可以移动 maxMove 次球。给你五个整数 m、n、maxMove、startRow 以及 startColumn ,找出并返回可以将球移出边界的路径数量。因为答案可能非常大,返回对 109 + 7 取余 后的结果。示例 1:输入:m = 2, n = 2, maxMove原创 2021-08-15 10:36:35 · 154 阅读 · 0 评论 -
leetcode *516. 最长回文子序列(2021.8.12)
【题目】*516. 最长回文子序列给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。示例 1:输入:s = "bbbab"输出:4解释:一个可能的最长回文子序列为 "bbbb" 。示例 2:输入:s = "cbbd"输出:2解释:一个可能的最长回文子序列为 "bb" 。提示:1 <= s.length <= 1000s 仅由小写英文字母组成【解题思路1】动态规原创 2021-08-12 22:35:10 · 148 阅读 · 1 评论 -
leetcode *413. 等差数列划分(2021.8.10)& **446. 等差数列划分 II - 子序列(2021.8.11)
【题目】*413. 等差数列划分如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。子数组 是数组中的一个连续序列。示例 1:输入:nums = [1,2,3,4]输出:3解释:nums 中有三个子等差数组:[1, 2, 3]、[2, 3, 4] 和 [1,2,3,4] 自身。示例原创 2021-08-10 11:24:32 · 181 阅读 · 0 评论 -
leetcode *1713. 得到子序列的最少操作次数(2021.7.26)
【题目】*1713. 得到子序列的最少操作次数给你一个数组 target ,包含若干 互不相同 的整数,以及另一个整数数组 arr ,arr 可能 包含重复元素。每一次操作中,你可以在 arr 的任意位置插入任一整数。比方说,如果 arr = [1,4,1,2] ,那么你可以在中间添加 3 得到 [1,4,3,1,2] 。你可以在数组最开始或最后面添加整数。请你返回 最少 操作次数,使得 target 成为 arr 的一个子序列。一个数组的 子序列 指的是删除原数组的某些元素(可能一个元素都不删除)原创 2021-07-26 17:47:20 · 204 阅读 · 0 评论 -
leetcode *300. 最长递增子序列(2020.3.14)
【题目】给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?官方题解...原创 2020-03-14 23:45:24 · 184 阅读 · 0 评论 -
leetcode **514. 自由之路(待研究)(2020.11.11)
【题目】**514. 自由之路视频游戏“辐射4”中,任务“通向自由”要求玩家到达名为“Freedom Trail Ring”的金属表盘,并使用表盘拼写特定关键词才能开门。给定一个字符串 ring,表示刻在外环上的编码;给定另一个字符串 key,表示需要拼写的关键词。您需要算出能够拼写关键词中所有字符的最少步数。最初,ring 的第一个字符与12:00方向对齐。您需要顺时针或逆时针旋转 ring 以使 key 的一个字符在 12:00 方向对齐,然后按下中心按钮,以此逐个拼写完 key 中的所有字符。原创 2020-11-11 09:03:03 · 195 阅读 · 0 评论 -
leetcode *845. 数组中的最长山脉
【题目】*845. 数组中的最长山脉我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”:B.length >= 3存在 0 < i < B.length - 1 使得 B[0] < B[1] < … B[i-1] < B[i] > B[i+1] > … > B[B.length - 1](注意:B 可以是 A 的任意子数组,包括整个数组 A。)给出一个整数数组 A,返回最长 “山脉” 的长度。如果不含有 “山脉” 则返回 0。原创 2020-10-25 10:17:15 · 159 阅读 · 0 评论 -
leetcode *1024. 视频拼接(2020.10.24)
【题目】*1024. 视频拼接你将会获得一系列视频片段,这些片段来自于一项持续时长为 T 秒的体育赛事。这些片段可能有所重叠,也可能长度不一。视频片段 clips[i] 都用区间进行表示:开始于 clips[i][0] 并于 clips[i][1] 结束。我们甚至可以对这些片段自由地再剪辑,例如片段 [0, 7] 可以剪切成 [0, 1] + [1, 3] + [3, 7] 三部分。我们需要将这些片段进行再剪辑,并将剪辑后的内容拼接成覆盖整个运动过程的片段([0, T])。返回所需片段的最小数目,如果原创 2020-10-24 11:27:28 · 1413 阅读 · 0 评论 -
leetcode *5. 最长回文子串(待深究Manacher算法)(2020.5.21)
【题目】5. 最长回文子串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"【解题思路1】暴力法class Solution { public String longestPalindrome(String s) { char[] chs = s.toCharArray();原创 2020-05-21 14:27:38 · 210 阅读 · 1 评论 -
leetcode *416. 分割等和子集(2020.10.11)
【题目】*416. 分割等和子集给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100数组的大小不会超过 200示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].示例 2:输入: [1, 2, 3, 5]输出: false解释: 数组不能分割成两个元素和相等的子集.【解题思路1】动态规划准备工作根据数组的长度 n 判断数组是否可原创 2020-10-11 10:26:44 · 163 阅读 · 0 评论 -
leetcode *834. 树中距离之和(待研究)(2020.10.6)
【题目】*834. 树中距离之和【解题思路1】树形动态规划首先考虑一个节点的情况,即每次题目指定一棵树,以 root 为根,询问节点 root 与其他所有节点的距离之和。dp数组的含义: 定义 dp[u] 表示以 u 为根的子树,它的所有子节点到它的距离之和,同时定义 sz[u] 表示以 u 为根的子树的节点数量动态转移方程:dp[u]=∑v∈son[u]dp[v]+sz[v]dp[u]=\sum_{v\in son[u]} dp[v] + sz[v]dp[u]=∑v∈son[u]dp[v]+sz原创 2020-10-06 13:33:29 · 336 阅读 · 0 评论 -
leetcode *LCP 19. 秋叶收藏集(待深究)(2020.10.1)
【题目】*LCP 19. 秋叶收藏集小扣出去秋游,途中收集了一些红叶和黄叶,他利用这些叶子初步整理了一份秋叶收藏集 leaves, 字符串 leaves 仅包含小写字符 r 和 y, 其中字符 r 表示一片红叶,字符 y 表示一片黄叶。出于美观整齐的考虑,小扣想要将收藏集中树叶的排列调整成「红、黄、红」三部分。每部分树叶数量可以不相等,但均需大于等于 1。每次调整操作,小扣可以将一片红叶替换成黄叶或者将一片黄叶替换成红叶。请问小扣最少需要多少次调整操作才能将秋叶收藏集调整完毕。示例 1:输入:lea原创 2020-10-01 16:40:30 · 232 阅读 · 0 评论 -
leetcode *剑指 Offer 63. 股票的最大利润 & 121. 买卖股票的最佳时机(2020.3.9)
【题目】给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 ...原创 2020-03-25 14:46:09 · 522 阅读 · 0 评论 -
leetcode *剑指 Offer 48. 最长不含重复字符的子字符串 & *3. 无重复字符的最长子串(2020.5.2)
【题目】*3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释:...原创 2020-05-02 15:34:26 · 174 阅读 · 0 评论 -
leetcode *剑指 Offer 49. 丑数 & *264. 丑数 II & 204. 计数质数(2020.12.3)& 263. 丑数 & *313. 超级丑数(2021.8.9)
【题目】【解题思路1】【解题思路2】原创 2020-09-29 00:20:51 · 231 阅读 · 0 评论 -
leetcode *剑指 Offer 47. 礼物的最大价值 & *64. 最小路径和(2020.7.23)
【题目】*剑指 Offer 47. 礼物的最大价值在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1:输入: [ [1,3,1], [1,5,1], [4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物提示:0 < grid.length原创 2020-09-28 23:59:19 · 1597 阅读 · 0 评论 -
leetcode **968. 监控二叉树(树形-动态规划)(待研究)(2020.9.22)
【题目】**968. 监控二叉树*337. 打家劫舍 III(树形-动态规划)给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。示例 1:输入:[0,0,null,0,0]输出:1解释:如图所示,一台摄像头足以监控所有节点。示例 2:输入:[0,0,null,0,null,0,null,null,0]输出:2解释:需要至少两个摄像头来监视树的所有节点。 上图显示了摄像头放置的有效位置之原创 2020-09-22 17:17:36 · 95 阅读 · 0 评论 -
leetcode 剑指 Offer 10- II. 青蛙跳台阶问题 & 70. 爬楼梯(2020.6.13)
【题目】假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 ...原创 2020-03-13 23:09:55 · 186 阅读 · 0 评论 -
leetcode *877. 石子游戏
【题目】*877. 石子游戏亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回 true ,当李赢得比赛时返回 false 。示例:输入:[5,3,4,5]输出:true解释原创 2020-09-01 10:07:29 · 236 阅读 · 0 评论 -
leetcode *486. 预测赢家(2020.9.1)
【题目】*486. 预测赢家给定一个表示分数的非负整数数组。 玩家 1 从数组任意一端拿取一个分数,随后玩家 2 继续从剩余数组任意一端拿取分数,然后玩家 1 拿,…… 。每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。给定一个表示分数的数组,预测玩家1是否会成为赢家。你可以假设每个玩家的玩法都会使他的分数最大化。示例 1:输入:[1, 5, 2]输出:False解释:一开始,玩家1可以从1和2中进行选择。如果他选择 2(或原创 2020-09-01 10:06:58 · 333 阅读 · 0 评论 -
leetcode **546. 移除盒子(未研究)(2020.8.15)
【题目】**546. 移除盒子给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表示不同的颜色。你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止。每一轮你可以移除具有相同颜色的连续 k 个盒子(k >= 1),这样一轮之后你将得到 k*k 个积分。当你将所有盒子都去掉之后,求你能获得的最大积分和。示例:输入:boxes = [1,3,2,2,2,3,4,3,1]输出:23解释:[1, 3, 2, 2, 2, 3, 4, 3, 1] ----> [1, 3, 3,原创 2020-08-15 10:15:26 · 144 阅读 · 0 评论 -
leetcode *337. 打家劫舍 III(树形-动态规划)(2020.8.5)
【题目】在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1输入: [3,2...原创 2020-03-24 23:48:25 · 249 阅读 · 0 评论 -
leetcode *剑指 Offer 14- I. 剪绳子 & *343. 整数拆分(2020.7.30)
【题目】*343. 整数拆分给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明: 你可以假设 n 不小于 2 且不大于 58。【解题思路1】动态规划对于的正整数 n,当 n≥2 时,可以拆分成至少两个正整数的和。令 k 是拆分出的第一个正整数原创 2020-07-30 12:12:57 · 189 阅读 · 0 评论 -
leetcode **LCP 13. 寻宝(待研究)(2020.7.29)
【题目】**LCP 13. 寻宝我们得到了一副藏宝图,藏宝图显示,在一个迷宫中存在着未被世人发现的宝藏。迷宫是一个二维矩阵,用一个字符串数组表示。它标识了唯一的入口(用 ‘S’ 表示),和唯一的宝藏地点(用 ‘T’ 表示)。但是,宝藏被一些隐蔽的机关保护了起来。在地图上有若干个机关点(用 ‘M’ 表示),只有所有机关均被触发,才可以拿到宝藏。要保持机关的触发,需要把一个重石放在上面。迷宫中有若干个石堆(用 ‘O’ 表示),每个石堆都有无限个足够触发机关的重石。但是由于石头太重,我们一次只能搬一个石头到原创 2020-07-29 09:09:26 · 453 阅读 · 1 评论 -
leetcode **410. 分割数组的最大值(2020.7.25)
【题目】**410. 分割数组的最大值给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。注意:数组长度 n 满足以下条件:1 ≤ n ≤ 10001 ≤ m ≤ min(50, n)示例:输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子数组。其中最好的方式是将其分为[7,2,5] 和 [10,8],因为此时这两个子数组各自的和的最大值原创 2020-07-25 11:14:52 · 173 阅读 · 1 评论 -
leetcode **312. 戳气球(2020.7.19)
【题目】**312. 戳气球有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。如果你戳破气球 i ,就可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的两个气球的序号。注意当你戳破了气球 i 后,气球 left 和气球 right 就变成了相邻的气球。求所能获得硬币的最大数量。说明:你可以假设 nums[-1] = nums[n] =原创 2020-07-19 10:23:56 · 191 阅读 · 0 评论 -
leetcode **97. 交错字符串(2020.7.18)
【题目】**97. 交错字符串给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。示例 1:输入: s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbcbcac”输出: true示例 2:输入: s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbbaccc”输出: false【解题思路1】动态规划双指针法的问题模拟示例1就知道了,双指针法示例1会输出false如果 |s1| + |s2| ≠ |原创 2020-07-18 09:52:32 · 171 阅读 · 0 评论 -
leetcode *96. 不同的二叉搜索树(2020.7.15)
【题目】*96. 不同的二叉搜索树给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2原创 2020-07-15 09:09:54 · 259 阅读 · 0 评论 -
leetcode *120. 三角形最小路径和(2020.7.14)
【题目】*120. 三角形最小路径和给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么原创 2020-07-14 09:37:37 · 178 阅读 · 0 评论 -
leetcode **174. 地下城游戏(2020.7.12)
【题目】**174. 地下城游戏一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他房间要么是空的(房间里的值为 0),要么包含增加骑士健康点数的魔法球(若房间里的值原创 2020-07-12 09:29:29 · 210 阅读 · 0 评论 -
leetcode *309. 最佳买卖股票时机含冷冻期(2020.7.10)
【题目】*309. 最佳买卖股票时机含冷冻期给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3 解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]【解题思路1】动态规划对买入定义为负收原创 2020-07-10 08:59:20 · 91 阅读 · 0 评论 -
leetcode *面试题 17.13. 恢复空格(字典树、待深究)(2020.7.9)
【题目】*面试题 17.13. 恢复空格哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!“已经变成了"iresetthecomputeritstilldidntboot”。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些词没在词典里。假设文章用sentence表示,设计一个算法,把文章断开,要求未识别的字符最少,返回未识别的字符原创 2020-07-09 09:48:52 · 258 阅读 · 0 评论