当前位置: 首页 > news >正文

图片网站seo百度快照举报网站

图片网站seo,百度快照举报网站,网站备案与所在地,wordpress是ftp吗目录 1. 买卖股票的最佳时机2. 打家劫舍 II 1. 买卖股票的最佳时机 🔗 原题链接:121. 买卖股票的最佳时机 假设在第 i i i 天卖出股票可获得最大利润,那么买入股票必然是在前 i − 1 i-1 i−1 天中的某一天。更进一步,买入股票应…

目录

  • 1. 买卖股票的最佳时机
  • 2. 打家劫舍 II

1. 买卖股票的最佳时机

🔗 原题链接:121. 买卖股票的最佳时机

假设在第 i i i 天卖出股票可获得最大利润,那么买入股票必然是在前 i − 1 i-1 i1 天中的某一天。更进一步,买入股票应当是第 arg min ⁡ 0 ≤ x ≤ i − 2 a [ x ] \argmin_{0\leq x\leq i-2} a[x] argmin0xi2a[x] 天。这说明我们可以维护一个 minprice 的变量,这样一来,a[i] - minprice 就代表在第 i i i 天卖出股票能够获得的最大利润。

class Solution {
public:int maxProfit(vector<int>& prices) {int minprice = 1e9;int ans = 0;for (auto& price: prices) {minprice = min(minprice, price);ans = max(ans, price - minprice);}return ans;}
};

2. 打家劫舍 II

先回顾第一代的打家劫舍。

🔗 原题链接:198. 打家劫舍

考虑使用dp。我们用 dp[i] 来代表偷前 i i i 家能够获得的最大金额,那么我们可以按照第 i i i 个元素的情况对 dp[i] 进行划分。

  • 偷窃第 i i i 间房屋,那么就不能偷窃第 i − 1 i-1 i1 间房屋,偷窃总金额为前 i − 2 i-2 i2 间房屋的最高总金额与第 i i i 间房屋的金额之和。
  • 不偷窃第 i i i 间房屋,偷窃总金额为前 i − 1 i-1 i1 间房屋的最高总金额。

转移方程为:

d p [ i ] = m a x ( d p [ i − 2 ] + n u m s [ i ] , d p [ i − 1 ] ) dp[i]=max(dp[i-2]+nums[i], \,dp[i-1]) dp[i]=max(dp[i2]+nums[i],dp[i1])

class Solution {
public:int rob(vector<int>& nums) {int n = nums.size();if (n == 0) return 0;if (n == 1) return nums[0];vector<int> dp(n);dp[0] = nums[0];dp[1] = max(nums[0], nums[1]);for (int i = 2; i < n; i++) {dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]);}return dp[n - 1];}
};

下面回到本题。

🔗 原题链接:213. 打家劫舍 II

假如偷第 0 0 0 间房屋,那么剩下可以偷窃的范围就是 [ 2 , n − 2 ] [2,n-2] [2,n2];假如不偷第 0 0 0 间房屋,那么剩下可以偷窃的范围就是 [ 1 , n − 1 ] [1,n-1] [1,n1]。取两者中的最大值就是本题答案。

class Solution {
public:int rob(vector<int>& nums) {int n = nums.size();if (n == 1) return nums[0];if (n == 2) return max(nums[0], nums[1]);vector<int> a(nums.begin() + 2, nums.begin() + n - 1);int price1 = rob1(a) + nums[0];vector<int> b(nums.begin() + 1, nums.begin() + n);int price2 = rob1(b);return max(price1, price2);}int rob1(vector<int>& nums) {int n = nums.size();if (n == 0) return 0;if (n == 1) return nums[0];vector<int> dp(n);dp[0] = nums[0];dp[1] = max(nums[0], nums[1]);for (int i = 2; i < n; i++) {dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]);}return dp[n - 1];}
};

此外,还可以使用滚动数组将空间复杂度优化至 O ( 1 ) O(1) O(1),这里从略。

http://www.yayakq.cn/news/222623/

相关文章:

  • 广州建立网站天地做网站
  • 网站原型图软件衡水企业网站
  • 集团企业网站建设方案策划书电子工程师在哪里报名
  • 销售网站建设考核指标免费网站模板
  • 360建筑网是什么网站软件研发工程师
  • 子网站建设的好处如何做一个自己的公众号
  • 网站设计怎么做ppt答辩网站设计的主要内容
  • 商城网站建设优化推广c 网站建设教程
  • 有哪些做拎包入住的网站怎样建设一个网站教学
  • 做视频的网站带模板下载财经门户网站建设
  • 如何在网站上推广自己的链接写作网站好吗
  • 网站建设论文 php请你设计一个网络营销方案
  • 单位网站建设工作总结国外哪些网站做产品推广比较好
  • wordpress多站点问题常德市建设网站
  • 企业建设网站公司查询网站怎么做
  • 电子商务网站策划书布局设计响应式网站和
  • php网站开发安全会议网站建设的意义
  • 方又圆网站建设中企动力销售好出单吗
  • wordpress功能模块百度关键词网站排名优化软件
  • 做网站 客户一直要求改wordpress注册未发邮件
  • 建设知道购物网站cms网站建站流程
  • 苏州html网站模板搜索关键词软件
  • 德化住房和城乡建设网站想做个网站要多少钱
  • 北京网站建设116net上海浦东建筑建设网站
  • 有没有便宜的网站建设网站建设可行性分析包括什么
  • 重庆网站制作公司重庆找app开发公司
  • 夺宝网站建设网页版攻速传奇
  • 代做毕业设计网站 道路桥梁自己小程序制作流程
  • 免费 网站 如何做今天的国内新闻
  • 南京品牌网站建设怎样推广广告