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

怎么让网站栏目页收录百度站长平台电脑版

怎么让网站栏目页收录,百度站长平台电脑版,如何运用网站做推广,江苏炒股配资网站开发leetcode 121. 买卖股票的最佳时机 题目链接:121. 买卖股票的最佳时机 - 力扣(LeetCode) 视频链接:动态规划之 LeetCode:121.买卖股票的最佳时机1_哔哩哔哩_bilibili 题目概述 给定一个数组 ,它的第 个元…

leetcode 121. 买卖股票的最佳时机

题目链接:121. 买卖股票的最佳时机 - 力扣(LeetCode)

视频链接:动态规划之 LeetCode:121.买卖股票的最佳时机1_哔哩哔哩_bilibili

 题目概述

给定一个数组 ,它的第  个元素  表示一支给定股票第 天的价格。pricesiprices[i]i

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 。0

 

示例 1:

输入:[7,1,5,3,6,4]
输出:5
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

示例 2:

输入:prices = [7,6,4,3,1]
输出:0
解释:在这种情况下, 没有交易完成, 所以最大利润为 0。

思路

1.确定dp数组含义:

dp[i][0] :第i天持有股票所得最多现金。

dp[i][1] :第i天不持有股票所得最多现金。

这里的“持有”和“不持有”不代表当天买入股票或者卖出股票,可能是前一天买的!!!

2.确定递推公式:(最开始现金为0元)

第i天持有股票:

1)当天就买进股票:-prices[i]

2)前一天买进股票:dp[i - 1][0]

所以dp[i][0] = max(dp[i - 1][0], -prices[i])

第i天不持有股票:

1)当天卖出股票:prices[i] + dp[i - 1][0]

2)前一天卖出股票:dp[i - 1][1]

所以dp[i][1] = max(dp[i - 1][1], prices[i] + dp[i - 1][0])

3.数组初始化:

dp[0][0] -= prices[0]

dp[0][1] = 0

4.确定遍历顺序:

从前向后

5.打印dp数组:

121.买卖股票的最佳时机

 

代码实现(动规)

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

代码实现(贪心)

class Solution {
public:int maxProfit(vector<int>& prices) {int low = INT_MAX;int result = 0;for (int i = 0; i < prices.size(); i++) {low = min(low, prices[i]);  // 取最左最小价格result = max(result, prices[i] - low); // 直接取最大区间利润}return result;}
};

leetcode 122.买卖股票的最佳时机II

题目链接:122. 买卖股票的最佳时机 II - 力扣(LeetCode)

视频链接:动态规划,股票问题第二弹 | LeetCode:122.买卖股票的最佳时机II_哔哩哔哩_bilibili

题目概述

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。

在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。

返回 你能获得的 最大 利润 。

示例 1:

输入:prices = [7,1,5,3,6,4]
输出:7
解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3 。总利润为 4 + 3 = 7 。

思路

本题和上一题没有多大区别,唯一区别就是本题可以多次买卖,在动规五部曲分析上也只有递归公式上有区别。

第i天持有股票:

1)当天就买进股票:dp[i - 1][1] - prices[i](这里是和上一题唯一不一样的区别,因为上道题最开始手里的钱是0元,所以是'0 - prices[i]'只不过把0给省略了,而这道题可以多次买卖股票,如果是当天买进股票的话,那么所得现金就是昨天不持有股票的所得现金 - 今天的股票价格)

2)前一天买进股票:dp[i - 1][0]

所以dp[i][0] = max(dp[i - 1][0], -prices[i])

第i天不持有股票:dp[i][1] = max(dp[i - 1][1], prices[i] + dp[i - 1][0])

代码实现(动规)

class Solution {
public:int maxProfit(vector<int>& prices) {int len = prices.size();vector<vector<int>> dp(len, vector<int>(2, 0));dp[0][0] -= prices[0];dp[0][1] = 0;for (int i = 1; i < len; i++) {dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - prices[i]); // 注意这里是和121. 买卖股票的最佳时机唯一不同的地方。dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] + prices[i]);}return dp[len - 1][1];}
};

代码实现(贪心)

class Solution {
public:int maxProfit(vector<int>& prices) {int result = 0;for(int i = 1;i < prices.size();i++) {result += max(prices[i] - prices[i - 1],0);}return result;}
};
http://www.yidumall.com/news/109874.html

相关文章:

  • 自己的电脑做网站服务器 买的服务器 速度网络舆情分析报告
  • 常州做网站设计怎么制作公司网页
  • web网站发布江苏企业网站建设
  • 写作网站私密seo排名是什么意思
  • 永康做网站公司搜索引擎关键词seo优化公司
  • 百度安全中心谷歌seo服务
  • 网站设计论文的题目网站注册流程和费用
  • 公司网站 用 个人备案域名seo是指什么意思
  • 跨境电子商务网页制作与网站建设谷歌浏览器网页版入口在哪里
  • 西安有哪些做网站建设的公司好seo网络推广软件
  • 慈溪做无痛同济&网站河南seo排名
  • wordpress修改成中文网站需要怎么优化比较好
  • 免费自己做网站吗怎么注册网站平台
  • 手机端网站需要多少钱阜新网络推广
  • 济南市建设网官网自动app优化最新版
  • 网站收录是怎么回事磁力宅
  • 北京百度关键词优化搜索引擎seo关键词优化效果
  • 泰州网站制作套餐网站域名ip地址查询
  • 做网站申请完空间后下一步干啥最好用的磁力搜索神器
  • 小说网站做编辑器湖南株洲疫情最新情况
  • 网站建设实训致谢语哈尔滨关键词优化报价
  • 聚通装潢口碑好不好保定百度seo排名
  • 建设一个网站的所有代码合肥网站制作公司
  • 烟台建设郑州百度搜索优化
  • 网站建设 牛商网技术提供国内最新新闻
  • 做网站v1认证是什么意思什么是关键词搜索
  • 一个网站多个域名备案上海百度竞价点击软件
  • 做web网站挣钱么上海优化公司排行榜
  • 广州模板建站多少钱营销策略ppt模板
  • wordpress 做公司网站郑州做网络营销渠道