按照动态规划的思路分解问题。
令dp[i]为以第i天为卖出点的最大收益,而不去管是从哪天开始买入得。
那么dp[i+1]=dp[i] + p[i+1], 其中p[i+1] 为第i+1天的收入。不过这有个前提就是dp[i+1]>=0, 最大收益不能为负,因为可以当天买卖收益为0.

#
# 
# @param prices int整型一维数组 
# @return int整型
#
class Solution:
    def maxProfit(self , prices ):
        # write code here
        n = len(prices)
        if n<=1:
            return 0
        dplast = 0    #上一天为卖出点的最大收益值
        maxp = dplast    #最大收益指
        for i in range(1, n):    #从第二天开始遍历
            p = prices[i]-prices[i-1]    #当前天相比前一天的收益值
            if dplast+p > 0:    #前一天为卖出点的最大收益加上今天的收益指,即为以今天为卖出点的最大收益,dp[i] = dp[i] + p[i] 
                dplast += p
            else:                #不过收益指不能小于0,因为最差情况就是当天买卖,收益为0。
                dplast = 0
            maxp = max(maxp, dplast)
        return maxp