![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
Shirandexiaowo
这个作者很懒,什么都没留下…
展开
-
LeetCode动态规划专题:第二十一天
Leetcode377. 组合总和 Ⅳclass Solution {public: int combinationSum4(vector<int>& nums, int target) { vector<long long> f(target + 1); f[0] = 1; for (int j = 1; j <= target; j ++ ) for (auto& x : n原创 2021-09-13 11:25:58 · 71 阅读 · 0 评论 -
LeetCode动态规划专题:第十九天
Leetcode392. 判断子序列class Solution {public: bool isSubsequence(string s, string t) { int k = 0; for (auto c : t) if (k < s.size() && c == s[k]) k ++ ; return k == s.size(); }};Leetco原创 2021-09-07 15:27:03 · 73 阅读 · 0 评论 -
LeetCode动态规划专题:第十八天
Leetcode300. 最长递增子序列思路:动态规划O(N2)O(N^2)O(N2),以右指针为端点的class Solution {public: int lengthOfLIS(vector<int>& nums) { vector<int> f(nums.size(), 1); int maxn = 1; for (int i = 0; i < nums.size(); i ++ ) {原创 2021-09-06 15:10:50 · 76 阅读 · 0 评论 -
LeetCode动态规划专题:第十七天
Leetcode5. 最长回文子串思路:回文串的判断回文串的长度分为两种,一种奇数个,一种偶数个class Solution {public: string longestPalindrome(string s) { int n = s.size(); string str; for (int i = 0; i < n; i ++ ) { int l = i - 1, r = i + 1;原创 2021-09-05 12:24:03 · 80 阅读 · 0 评论 -
补LeetCode动态规划专题:第六天
乘积最大子序列class Solution {public: int maxProduct(vector<int>& nums) { int maxn = INT_MIN, imax = 1, imin = 1; for (int i = 0; i < nums.size(); i ++ ) { if (nums[i] < 0) swap(imax, imin); im原创 2021-09-04 17:24:10 · 70 阅读 · 0 评论 -
补LeetCode动态规划专题:第四天
跳跃游戏思路:贪心每一次保存跳得最远的格子,如果遍历到不能到的格子返回falsefalsefalse,否则更新跳的最远的距离,如果最远距离已经超过数组长度返回truetruetrueclass Solution {public: bool canJump(vector<int>& nums) { int maxn = 0; for (int i = 0; i < nums.size(); i ++ ) { if原创 2021-09-04 14:16:25 · 73 阅读 · 0 评论 -
LeetCode动态规划专题:第十六天
Leetcode64. 最小路径和思路:动态规划class Solution {public: int minPathSum(vector<vector<int>>& g) { int n = g.size(), m = g[0].size(); for (int i = 0; i < n; i ++ ) for (int j = 0; j < m; j ++ )原创 2021-09-04 14:03:07 · 67 阅读 · 0 评论 -
LeetCode动态规划专题:第十五天
思路总结Leetcode62. 不同路径思路:动态规划初始化边界,将第一行和第一列方案数置为1,每一个格子只能从上面的格子或者左边的格子都过来,所以走到该格子的方案数就应该是两者之和f[i][j] += f[i - 1][j] + f[i][j - 1];class Solution {public: int uniquePaths(int m, int n) { vector<vector<int>> f(m, vector<int>原创 2021-09-04 12:15:55 · 77 阅读 · 0 评论 -
LeetCode动态规划专题:第十四天
思路总结矩阵区域和的问题其实就是,二维前缀和的问题,记住二维前缀和的公式:第一个公式是二维前缀和预处理公式:sum[i][j] = f[i][j] + f[i-1][j] + f[i][j - 1] - f[i - 1][j - 1]第二个公式是求区域和公式:以r1,c1r1,c1r1,c1为左上角,r2,c2r2,c2r2,c2为右下角的区域和公式为sum[r2][c2] - sum[r1 - 1][c2] - sum[r2][c1 - 1] + sum[r1 - 1][c1 -1]Leetc原创 2021-09-04 11:00:07 · 70 阅读 · 0 评论 -
LeetCode动态规划专题:第十三天
下降路径最小和思路:动态三角形模型class Solution {public: int minFallingPathSum(vector<vector<int>>& matrix) { int n = matrix.size(); if (n == 1) return matrix[0][0]; int minn = INT_MAX; for (int i = 1; i <原创 2021-09-01 10:33:31 · 51 阅读 · 0 评论 -
LeetCode动态规划专题:第十二天
Leetcode118. 杨辉三角添加链接描述递推计算每一行,将结果接到答案后:f[i][j]=f[i−1][j−1]+f[i−1][j]f[i][j] = f[i-1][j-1] + f[i-1][j]f[i][j]=f[i−1][j−1]+f[i−1][j]class Solution {public: vector<vector<int>> generate(int n) { vector<vector<int>> re原创 2021-08-31 21:19:35 · 81 阅读 · 0 评论 -
LeetCode动态规划专题:第十一天
丑数二思路:多路归并算法丑数数组本身乘以因子得到新的三个序列,这三个序列合并就是丑数数组本身,使用三个指针,用当前丑数数组元素扩展新的丑数数组,每扩展一次指针后移丑数数组长度为n为止class Solution {public: int nthUglyNumber(int n) { vector<int> f(1, 1); for (int i = 0, j = 0, k = 0; f.size() < n; ) {原创 2021-08-30 16:10:43 · 67 阅读 · 0 评论 -
LeetCode动态规划专题:第十天
等差数列划分思路预处理差分数组,寻找每一小段的等差数组,计算每一小段等差数组可以分成的等差数组个数class Solution {public: int get_cnt(int l, int r) { int res = 0, len = r - l + 1; for (int i = 3; i <= len; i ++ ) res += len - i + 1; return res; }原创 2021-08-29 11:04:34 · 76 阅读 · 0 评论 -
LeetCode动态规划专题:第九天
单词拆分class Solution {public: bool wordBreak(string s, vector<string>& words) { typedef unsigned long long ULL; const int P = 131; unordered_set<ULL> S; for (auto& word : words){ ULL h = 0原创 2021-08-28 21:37:35 · 69 阅读 · 0 评论 -
LeetCode动态规划专题:第八天
最佳买卖股票含冷冻期class Solution {public: // f[i][0]: 手上持有股票的最大收益 // f[i][1]: 手上不持有股票,并且处于冷冻期中的累计最大收益 // f[i][2]: 手上不持有股票,并且不在冷冻期中的累计最大收益 int maxProfit(vector<int>& prices) { if (prices.empty()){ return 0原创 2021-08-27 21:42:27 · 147 阅读 · 0 评论 -
LeetCode动态规划专题:第七天
最佳观光组合观察公式values[j]−j+values[i]+ivalues[j]-j+values[i]+ivalues[j]−j+values[i]+i发现,当枚举第二个jjj的时候,对于每一个values[j]−jvalues[j]-jvalues[j]−j都是唯一确定的,因此只需要在遍历的时候维护values[i]+ivalues[i]+ivalues[i]+i的最大值即可class Solution {public: int maxScoreSightseeingPair(vect原创 2021-08-27 21:36:20 · 83 阅读 · 0 评论 -
LeetCode动态规划专题:第五天
最大子序和动态规划法class Solution {public: int maxSubArray(vector<int>& nums) { int maxn = nums[0], n = nums.size(), pre = nums[0]; for (int i = 1; i < nums.size(); i ++ ) { int cur = max(pre + nums[i], nums[i原创 2021-08-25 23:37:20 · 104 阅读 · 0 评论 -
LeetCode动态规划专题:第三天
打家劫舍思路(自创)a、b、x、y分别表示偷、不偷、偷、不偷上一家上一家、本家本家得到的最大利润,如果想要偷本家,上一家一定不能偷,但是,如果不想偷本家,从上一家偷与不偷最大值转移过来,最后返回,x和y最大值class Solution {public: int rob(vector<int>& nums) { int n = nums.size(); if (n == 1) return nums[0]; int a =原创 2021-08-22 10:44:16 · 61 阅读 · 0 评论 -
Leetcode动态规划专题:第二天
爬梯子这道题其实就是斐波那锲数列的变形class Solution {public: int climbStairs(int n) { if (n <= 3) return n; int a = 2, b = 3, c = 0; for (int i = 4; i <= n; i ++ ) {a c = a + b; a = b; b = c;原创 2021-08-21 12:19:17 · 53 阅读 · 0 评论 -
Leetcode动态规划专题:第一天
斐波那契数方法一:递推(动态规划)class Solution {public: int fib(int n) { if (n < 2) { return n; } int p = 0, q = 0, r = 1; for (int i = 2; i <= n; ++i) { p = q; q = r; r = p +原创 2021-08-20 17:06:37 · 57 阅读 · 0 评论 -
第十八天:动态规划之线性规划问题
今天是释然发题解的第十八天,以后每一天都会和大家分享学习路上的心得,希望和大家一起进步,一起享受coding的乐趣。本文约2700字,预计阅读10分钟昨天我们学习了动态规划之背包型规划,忘记的小伙伴们可以看一下哦:背包型今天我们来聊一聊动态规划的线性规划,明天和大家分享动态规划的相关题目:动态规划之线性规划例题一:最长公共子序列问题例题二:最长上升子序列问题动态规划解题的基本步骤1.明确dp数组的含义:2.找出递归关系式:3.就是初始化了例题:不同路径(leetcode62)解题思路一:数学的思想原创 2020-05-25 21:44:54 · 1835 阅读 · 1 评论 -
第十七天:动态规划之背包型动态规划
今天是释然发题解的第十七天,以后每一天都会和大家分享学习路上的心得,希望和大家一起进步,一起享受coding的乐趣。本文约2700字,预计阅读10分钟昨天我们学习了动态规划,忘记的小伙伴们可以看一下哦:动态规划今天我们来聊一聊动态规划的背包型动态规划,明天和大家分享动态规划之线性动态规划的相关内容:背包型动态规划例题:从记忆化搜索写起总结记忆化搜索1.明确搜索dfs的含义:2.找出递归关系式:3.就是初始化了例题:不同路径(leetcode62)解题思路一:数学的思想解题思路二:动态规划1.明确d原创 2020-05-24 10:51:34 · 250 阅读 · 0 评论 -
第十六天:动态规划
今天是释然发题解的第十六天,以后每一天都会和大家分享学习路上的心得,希望和大家一起进步,一起享受coding的乐趣。本文约字,预计阅读7分钟昨天我们学习了快速排序,忘记的小伙伴们可以看一下哦:快速排序今天我们来聊一聊动态规划,明天和大家分享动态规划的相关题目:动态规划定义:动态规划解题的基本步骤1.明确dp数组的含义:2.找出递归关系式:3.就是初始化了例题:NBA总冠军(leetcode62)链表定义:动态规划这个东西吧,定义有点复杂,我们先来通过例题入手:例子: 一个含有n阶的楼梯,一次原创 2020-05-19 23:32:26 · 243 阅读 · 0 评论