博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]题解(python):123-Best Time to Buy and Sell Stock III
阅读量:6086 次
发布时间:2019-06-20

本文共 1089 字,大约阅读时间需要 3 分钟。

题目来源:

  https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/


 

题意分析:

  和上题类似,array[i]代表第i天物品价格,如果只能交易2次。问最大利润。


 

题目思路:

  这是一个动态规划问题。不难想到把整个数组拆成两部分。那么用两个数组First,second分别array[:i]和array[i:]的最大利润。那么答案就等于max(First[i] + second[i + 1])。


 

代码(python):

  

class Solution(object):    def maxProfit(self, prices):        """        :type prices: List[int]        :rtype: int        """        size = len(prices)        if size == 0: return 0        first,second = [0 for i in range(size)],[0 for i in range(size+1)]        minp = prices[0]        for i in range(size):            if prices[i] <= minp:                minp = prices[i];first[i] = first[i - 1]            first[i] = max(prices[i] - minp,first[i-1])        maxp = prices[size-1]        j = size - 1        while j >= 0:            if prices[j] >= maxp:                maxp = prices[j]            second[j] = max(second[j+1],maxp - prices[j])            j -= 1        ans = 0        for i in range(size):            ans = max(ans,first[i]+second[i+1])        return ans
View Code

 

转载于:https://www.cnblogs.com/chruny/p/5302870.html

你可能感兴趣的文章
硬盘空间术语:unallocated, unused and reserved
查看>>
SQL Server 2014里的缓存池扩展
查看>>
windows删除多余启动引导项
查看>>
Vertex Shader-顶点着色入门
查看>>
连接MYOB ODBC,在MyEclipse 下Commit成功,在Tomcat下单独运行,Commit显示Connection 已经关闭...
查看>>
ASP.NET中的缩略图应用
查看>>
Data Profiling Task
查看>>
如何在Blog中加入MSN按钮
查看>>
redis(一) 安装以及基本数据类型操作
查看>>
厚积薄发,拥抱 .NET 2016
查看>>
SQL2000 2005 破解函数,过程,触发器,视图
查看>>
美味辣子炒鸡
查看>>
开发可统计单词个数的Android驱动程序(2)
查看>>
一次向svn中增加所有新增文件 svn add all new files【转】
查看>>
Ubuntu 14.04配置LAMP(Linux、Apache、MySQL、PHP)
查看>>
字符串数组连接例子(原创)
查看>>
Linux设备驱动之Ioctl控制【转】
查看>>
Winform文件下载之断点续传
查看>>
TCP三次握手
查看>>
ABP理论学习之Web API控制器(新增)
查看>>