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

互联网骗局浏览网站做任务网店推广平台有哪些

互联网骗局浏览网站做任务,网店推广平台有哪些,苏州工业园区招聘官网,html5作业 建设网站一、121. 买卖股票的最佳时机 121. 买卖股票的最佳时机 视频讲解:动态规划之 LeetCode:121.买卖股票的最佳时机1_哔哩哔哩_bilibili 代码随想录 1. 解题思路 (1)定义dp数组含义:dp[i][0]表示持有这支股票得到的最大现…

一、121. 买卖股票的最佳时机

121. 买卖股票的最佳时机

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

代码随想录

1. 解题思路

(1)定义dp数组含义:dp[i][0]表示持有这支股票得到的最大现金,dp[i][1]表示不持有这支股票得到的最大现金(注意:并不是在该天有将股票卖出的行为,而仅仅表示一个状态,有可能股票在前几天已经卖出去了)。

(2) 递推公式:

        首先分析如何推出dp[i][0],dp[i][0]表示持有这支股票得到的最大现金,所以它的状态有两种,一种是前一天持有这支股票然后今天依然保持持有状态,另一种是之前一直没有购买而今天买入这只股票,所以dp[i][0] = max(dp[i-1][0], 0-prices[i]);

        其次分析dp[i][1],表示不持有这支股票得到的最大现金,依旧是两种状态,一种是前一天不持有这支股票然后今天依然保持不持有状态,另一种是在第i天卖出这只股票,所以dp[i][1] = max(dp[i-1][1], dp[i-1][0]+prices[i])。

(3)dp数组初始化:dp[0][0]第0天持有股票的最大现金,那么就是买入这只股票,即-prices[0];dp[0][1]第0天不持有股票的最大现金为0。

(4)遍历顺序:从前向后遍历,因为依赖于前面的状态。

(5)打印dp数组。

2. 代码实现

class Solution:def maxProfit(self, prices: List[int]) -> int:length = len(prices)if length == 0:return 0dp = [[0]*2 for _ in range(length)]dp[0][0] = -prices[0]dp[0][1] = 0for i in range(1, length):dp[i][0] = max(dp[i-1][0], -prices[i])dp[i][1] = max(dp[i-1][1], dp[i-1][0]+prices[i])return dp[-1][1]

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

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

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

代码随想录

1. 与 I 的区别

        本题可以买卖多次,而I只可以买卖一次,差异仅仅是在买入股票时不再是-pirces[i],初始金额并不是0-prices[i],而是dp[i-1]-prices[i]。

2. 代码实现

class Solution:def maxProfit(self, prices: List[int]) -> int:length = len(prices)if length == 0:return 0dp = [[0]*2 for _ in range(length)]dp[0][0] = -prices[0]dp[0][1] = 0for i in range(1, length):dp[i][0] = max(dp[i-1][0], dp[i-1][1]-prices[i])dp[i][1] = max(dp[i-1][1], dp[i-1][0]+prices[i])return dp[-1][1]

三、123.买卖股票的最佳时机III

这道题一下子就难度上来了,关键在于至多买卖两次,这意味着可以买卖一次,可以买卖两次,也可以不买卖。

视频讲解:动态规划,股票至多买卖两次,怎么求? | LeetCode:123.买卖股票最佳时机III_哔哩哔哩_bilibili

代码随想录

1. 解题思路

本题与Ⅰ、Ⅱ的区别:至多买卖两次收获的最大利润是多少。

(1)dp数组的含义:写出所有的状态,dp[i][0]表示不操作,dp[i][1]表示第一次持有,dp[i][2]表示第一次不持有(卖出),dp[i][3]表示第二次持有,dp[i][4]表示第二次不持有。

(2)递推公式:

        dp[i][0]是不操作,那么就是前一天状态推导得到的,所以dp[i][0] = dp[i-1][0];

        dp[i][1]表示第一次持有,既可以延续前一天买入的状态,也可以表示第i天买入,所以dp[i][1] = max(dp[i-1][1], dp[i-1][0]-prices[i]);

        dp[i][2]表示第一次不持有(卖出),延续前一天不持有的状态,也可以第i天卖出,所以dp[i][2] = max(dp[i-1][2], dp[i-1][1]+prices[i]);

        dp[i][3]表示第二次持有,既可以是前一天持有,也可以是前一天不持有但今天买入,所以dp[i][3] = max(dp[i-1][3], dp[i-1][2]+prices[i]);

        dp[i][4]表示第二次不持有,既可以延续前一天不持有,也可以第i天卖出,所以dp[i][4] = max(dp[i-1][4], dp[i-1][3]+prices[i])。

(3)dp数组初始化:

        dp[0][0]不操作,那么初始化为0;dp[i][1]为-prices[0];dp[0][2]表示第一次不持有(卖出),那么也就是第0天买入并且第0天卖出,所以初始化为0;dp[0][3]=-prices[0];dp[0][4] = 0。

(4)遍历顺序:从小到大遍历。

(5)打印dp数组。

2. 代码实现

class Solution:def maxProfit(self, prices: List[int]) -> int:length = len(prices)if length == 0:return 0dp = [[0]*5 for _ in range(length)]dp[0][0] = 0dp[0][1] = -prices[0]dp[0][2] = 0dp[0][3] = -prices[0]dp[0][4] = 0for i in range(1, length):dp[i][0] = dp[i-1][0]dp[i][1] = max(dp[i-1][1], dp[i-1][0]-prices[i])dp[i][2] = max(dp[i-1][2], dp[i-1][1]+prices[i])dp[i][3] = max(dp[i-1][3], dp[i-1][2]-prices[i])dp[i][4] = max(dp[i-1][4], dp[i-1][3]+prices[i])return dp[-1][4]

http://www.dtcms.com/wzjs/232379.html

相关文章:

  • 应用制作app软件整站优化是什么意思
  • 自适应网站的图做多大 怎么切seo招聘信息
  • 怎么用本机做服务器发布网站seo在线优化
  • 住房城乡建设部网站文件查询附近电脑培训班位置
  • 本地php网站搭建b站推广网站2024年
  • 宿迁市网站建设百中搜优化软件靠谱吗
  • wordpress 后台文章免费seo软件推荐
  • c 做游戏的网站教学郑州网站优化排名
  • 男女做暖暖暖网站广告投放平台有哪些
  • 大型房产网站建设网站源码平台
  • 做网站容易学吗seo代码优化
  • 可以做网站吗店铺推广引流的方法
  • 小城镇建设投稿网站服务营销案例
  • php网站开发专业高质量外链
  • 处方药可以做网站吗百度软件商店下载安装
  • 邯郸教育网站建设国家反诈中心app下载
  • 用什么网站做框架图百度网页版登录入口
  • 高密做网站哪家强价位武汉seo论坛
  • 青岛网站制作网站百度人工电话多少号
  • 即时设计生成网页seo软件排行榜前十名
  • 哪些网站做的人比较少百度营销搜索推广
  • 做网站的会淘宝美工么重庆seo
  • 网站开发微信支付详细教程seo做关键词怎么收费的
  • 做火情监控网站需要用什么系统免费搭建网站
  • 消防做ccc去那个网站福建seo顾问
  • 简易的网站制作上海网络推广平台
  • 百度搜索网南京seo关键词优化预订
  • 临沧网站建设ynyue如何编写一个网站
  • 做网站需要资料关键词搜索量全网查询
  • 海淀网站建设公司搜索引擎营销的方法