
动态规划
如果我来了6
这个作者很懒,什么都没留下…
展开
-
编辑距离【leetcode 72】
解答动态规划class Solution {public: int minDistance(string word1, string word2) { // 获取字符串 word1 的长度 int m = word1.size(); // 获取字符串 word2 的长度 int n = word2.size(); if(m==0||n==0) return max(m,n); // .原创 2021-12-22 23:33:44 · 3417 阅读 · 0 评论 -
最 小路径和【leetcode 64】
解答动态规划#include <vector>#include <iostream>using namespace std;// @lc code=startclass Solution {public: int minPathSum(vector<vector<int>>& grid) { // m 表示有多少行 int m = grid.size(); .原创 2021-12-21 17:12:05 · 316 阅读 · 0 评论 -
打家劫舍 II【leetcode 213】
解答动态规划#include <vector>using namespace std;class Solution {public: int rob(vector<int>& nums) { // 先获取全部房间的总数 int n = nums.size(); // 如果数组为空,表示没有房间,那么自然偷不到东西,直接返回 0 if(n==0) return 0; // 如.原创 2021-12-21 14:43:42 · 116 阅读 · 0 评论 -
打家劫舍【leetcode 198】
解答动态规划#include <vector>using namespace std;class Solution {public: int rob(vector<int>& nums) { // 先获取全部房间的总数 int n = nums.size(); // 设置一个数组 dp 用来存放前 n 个房间可以偷取的最大金额 // dp[0] 表示前 0 个房间可以偷取的最大金额 .原创 2021-12-21 14:21:32 · 122 阅读 · 0 评论 -
不同路径 II【leetcode 63】
解答动态规划#include <vector>using namespace std;// @lc code=startclass Solution {public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { // m 行 int m = obstacleGrid.size(); // n 列 .原创 2021-12-21 12:53:03 · 245 阅读 · 0 评论 -
不同路径【leetcode 62】
解答动态规划#include <vector>using namespace std;class Solution {public: int uniquePaths(int m, int n) { // 设置二维数组 dp 用来储存到达每个位置时不同路径的数量 // dp[0][0] 表示从第 0 行第 0 列到达第 0 行第 0 列时不同路径的数量 // dp[0][i] 表示从第 0 行第 0 列到达第 0 行第 i .原创 2021-12-21 11:19:05 · 119 阅读 · 0 评论 -
买卖股票的最 佳时机含手续费【leetcode 714】
解答动态规划第122题的变形,只需要考虑买入股票时减去手续费即可#include <vector>#include <algorithm>using namespace std;class Solution {public: int maxProfit(vector<int>& prices, int fee) { int n = prices.size(); if(n<2) return 0; .原创 2021-12-18 11:07:52 · 236 阅读 · 0 评论 -
最 佳买卖股票时机含冷冻期【leetcode 309】
解答动态规划基于122题的变形第 i - 2 天【不持有】股票,第 i 天买入(考虑冷冻期)前天【不持有】股票,今天买入特殊处理:i<2时,不持有股票时的收益为0,所以代码为:i>=2?dp[i-2][0]:0dp[i][1] = max(dp[i-1][1],(i>=2?dp[i-2][0]:0)-prices[i]);#include <vector>#include <algorithm>using namespace std;clas.原创 2021-12-18 10:56:54 · 143 阅读 · 0 评论 -
买卖股票的最 佳时机 III【leetcode 123】
解答动态规划#include <vector>#include <algorithm>using namespace std;class Solution {public: int maxProfit(vector<int>& prices) { int n = prices.size(); //先获取数组的长度 if(n==0) return 0; //特殊处理 // 设置一个三维数组 d.原创 2021-12-18 10:34:11 · 128 阅读 · 0 评论 -
买卖股票的最 佳时机 II【leetcode 122】
解答动态规划#include <vector>#include <algorithm>using namespace std;class Solution {public: int maxProfit(vector<int>& prices) { int n = prices.size(); if(n<2) return 0; vector<vector<int>&g.原创 2021-12-18 10:30:45 · 251 阅读 · 0 评论 -
买卖股票的最 佳时机【leetcode 121】
解答一次遍历如果我是在历史最低点买的股票就好了!太好了,在题目中,我们只要用一个变量记录一个历史最低价格 minprice,我们就可以假设自己的股票是在那天买的。那么我们在第 i 天卖出股票能得到的利润就是 prices[i] - minprice。我们只需要遍历价格数组一遍,记录历史最低点,然后在每一天考虑这么一个问题:如果我是在历史最低点买进的,那么我今天卖出能赚多少钱?当考虑完所有天数之时,我们就得到了最好的答案。#include <vector>#include <ma.原创 2021-12-18 10:20:15 · 633 阅读 · 0 评论 -
买卖股票的最 佳时机 IV【leetcode 188】
解答#include <vector>#include <algorithm>using namespace std;// @lc code=startclass Solution {public: int maxProfit(int k, vector<int>& prices) { int n = prices.size(); //先获取数组的长度 if(n==0) return 0; //特殊处理 .原创 2021-12-17 23:11:17 · 741 阅读 · 0 评论 -
零钱兑换【leetcode 322】
解答因为硬币可以重复使用,因此这是一个完全背包问题。dp[i] 表示想要凑齐 i 元需要的最少硬币个数dp[0] 表示想要凑齐 0 元需要的最少硬币个数dp[1] 表示想要凑齐 1 元需要的最少硬币个数dp[14] 表示想要凑齐 14 元需要的最少硬币个数#include <vector>using namespace std;// @lc code=startclass Solution {public: int coinChange(vector<int.原创 2021-12-15 17:57:50 · 322 阅读 · 0 评论