vue组件 服务注册中心 阿里巴巴 Java包装类 iphone matplotlib ssh Zeptojs jq获取第一个子元素 list获取最后一个元素 oracle自增长 cos图像和sin图像 hbase端口 input取消边框 配置tomcat环境变量 winbox使用教程 axure时间选择控件 flutter ui构建工具 python网络编程 mysql 连接 python定义变量 python编程工具 java使用 java基础入门 java操作mysql java当前时间 java怎么配置 java语言是什么 java读取文本 linux如何安装 shell编程学习 sql语句大全实例教程 xp画图工具 linux命令详解词典 tftpd64 数科阅读器 2k14生涯模式修改器 teraterm 疯狂java讲义 git命令
当前位置: 首页 > 学习教程  > 编程语言

股票二记录贴,动规一定好?这个时候贪心更简单

2020/11/4 15:09:37 文章标签:

解题思路 此处撰写解题思路 记录一下dp的过程,并且还有一个更好的方法,只要 记录差值为正就加上的贪心算法 代码 class Solution:def maxProfit(self, prices: List[int]) -> int:"""动归方程:dp[i][k][1] max(dp[i-1]…

解题思路

此处撰写解题思路
记录一下dp的过程,并且还有一个更好的方法,只要 记录差值为正就加上的贪心算法

代码

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        """
        动归方程:
        dp[i][k][1] = max(dp[i-1][k][1],dp[i-1][k-1][0] - price[i])
        dp[i][k][0] = max(dp[i-1][k][0],dp[i-1][k][1] + price[i])
        k 无穷: 
        dp[i][k][1] = max(dp[i-1][k][1],dp[i-1][k][0] - price[i])
        dp[i][k][0] = max(dp[i-1][k][0],dp[i-1][k][1] + price[i])
        不需要k:
        dp[i][1] = max(dp[i-1][1],dp[i-1][0] - price[i])
        dp[i][0] = max(dp[i-1][0],dp[i-1][1] + price[i])
        """
        n = len(prices)
        if n == 0: return 0
        for i in range(0,n):
            if i == 0:
                dp_i_1 = -prices[i]
                dp_i_0 = 0
            else:
                temp = dp_i_1
                dp_i_1 = max(dp_i_1,dp_i_0 - prices[i])
                dp_i_0 = max(dp_i_0,dp_i_1 + prices[i])
        return dp_i_0

## 第二种: 思路很简单,只要连续的两天,操作能赚钱,那么我就进行操作。即买卖一次
class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        ans = 0
        for i in range(1, len(prices)):
            if prices[i] > prices[i-1]:
                ans += prices[i] - prices[i-1]
        return ans

本文链接: http://www.dtmao.cc/news_show_350350.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?