
动态规划
文章平均质量分 50
谢蟹蟹猴啊
这个作者很懒,什么都没留下…
展开
-
剪绳子---动态规划和贪心
class Solution {public: int cuttingRope(int n) { /* * 三种特殊情况: * 1、长度为1时,没法剪,最大乘积为0 * 2、长度为2时,最大乘积为1 × 1 = 1 * 3、长度为3时,最大乘积为1 × 2 = 2 */ if (n <= 3) return n - 1; /* * 创建动.原创 2021-07-29 11:06:43 · 108 阅读 · 0 评论 -
Leetcode72:编辑距离--面试题常考之动态规划~
思路: 一旦涉及到子问题,可以用自顶向下的递归和自底向上的动态规划。然而递归会产生许多重复的计算,动态规划就不同了首先搬上动态规划代码,思路是这里有两个变量,字符串1和2的长度,dp[i][j]表示把字符串1的前0个到i个字符串变成字符串2的前0个到j字符所需要的最少操作个数。如果i和j对应的元素相同那我们操作个数dp[i][j]=dp[i-1][j-1];如果不同,那为了相同,我们可以使用插入,删除和提换操作中的最小代价。class Solution {public: int min.原创 2021-07-17 14:43:58 · 123 阅读 · 0 评论 -
91. 解码方法 +28.实现strStr()
class Solution {public: int numDecodings(string s) { int n = s.size(); vector<int> f(n + 1); f[0] = 1; for (int i = 1; i <= n; ++i) { if (s[i - 1] != '0') { f[i] += f[i - 1]; .原创 2021-07-14 15:32:32 · 78 阅读 · 0 评论 -
X的N次幂---从o(n)时间复杂度到o(logn)~二分法之递归
50. Pow(x, n)题目: 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。思路: 暴力法解决该问题的时间复杂度是o(n),不能通过,那题目相当于暗示小于时间复杂o(n)的算法,我们会想到二分法,一个数字n我们用n/2 n/4 n/8 一直到等于1深度是 o(logn);我们每次都计算当前的一半,然后乘起来即可嘛。可以用递归的方式实现。class Solution {public: double myPowHelper(double x, unsigned int原创 2021-07-04 13:57:28 · 1841 阅读 · 0 评论 -
152. 乘积最大子数组 --不符合最优子结构的动态规划之改进
题目: 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。思路: 注意到这道题目用动态规划,但是不符合最优子结构的问题,以某个数字结尾的最大值不是和前面的只和前面的最大值有关,还和前面的最小值有关,因为数组从存在负数。我这个数比如是-3,前面最大值是30,最小值是20,我肯定要最小值呢。class Solution {public: int maxProduct(vector<int>& nu原创 2021-07-04 10:19:08 · 154 阅读 · 0 评论 -
动态规划系列之:股票买卖问题!1
121.买卖股票的最佳时机题目: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。思路: 用暴力发会超时,想想看还有什么方法。注意到利润的计算一定是在第二个元素才开始的至少!因为得先买入。所以我们可以从第二个元素开始计算当前的pirce减去之前元原创 2021-06-09 17:25:51 · 333 阅读 · 0 评论 -
Leetcode1049:最后一块石头的重量II && Leetcode 1046:最后一块石头的重量I --介绍了大堆顶和小堆顶的知识!!!!
题目:有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块 石头。返回此石头 最小的可能重量 。如果没有石头剩下,就返回 0。示例1:输入:stones =原创 2021-06-08 11:13:12 · 206 阅读 · 0 评论 -
动态规划类题目总结!!(持续更新~~ 2021.06.24)
To be continue~原创 2021-06-07 10:45:10 · 131 阅读 · 0 评论 -
Leetcode 5:最长回文字串(**中等!!)
题目:给你一个字符串 s,找到 s 中最长的回文子串。注意:回文串指的是正反两个方向读都是一样的字符串。代码1:下面的代码贴上只是纪念下,一开始做题不知道什么是回文串,案例测试太简单了,导致我理解的是 aaaabb 返回aaaa; cbcaaa返回aaa cbbcaaa返回cbbc。 然后我突然想用最笨的方法来解决,就是纯逻辑思维,中间遇到了很多边界条件不能处理,比如 cbcaa,aaaa 这种连续变量临界的条件,总之下面这个笨笨的代码最终也算是实现了我自认为的回文串。。class Solution原创 2021-05-27 20:24:51 · 97 阅读 · 0 评论 -
Leetcode664:奇怪的打印机(动态规划-困难)
题目简述:有台奇怪的打印机有以下两个特殊要求:项目打印机每次只能打印由 同一个字符 组成的序列。项目每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符。项目给你一个字符串 s ,你的任务是计算这个打印机打印它需要的最少打印次数。示例 1: 输入:s = "aaabbb" 输出:2 解释:首先打印 "aaa" 然后打印 "bbb"。示例 2: 输入:s = "aba"输出:2解释:首先打印 "aaa" 然后在第二个位置打印 "b" 覆盖掉原来的字符 'a'。思原创 2021-05-24 10:09:04 · 205 阅读 · 0 评论 -
Leetcode1035.不相交的线-动态规划~~
思路: 刚看到这题我在思考能否用暴力法+贪心来求解,后来发现会存在问题,举个例子: 6 1 2 4 11 12 3 11 12 13 4 7 假设我让i再遍历时候匹配j中最先与他相同的元素,那么4与4匹配了,然后11 12 就失去了匹配权力~~~ 前面贪了小便宜可能导致后面大便宜没占到~ 也就说这个问题前面的解会影响后面的解,这让人联想到了动态规划~ 换一种思路,不相交,那就是两个指针在两数组游走时每个组之间两两匹配是递增的,即要计.原创 2021-05-21 21:46:11 · 196 阅读 · 0 评论