题解 | #买卖股票的最好时机(三)#

买卖股票的最好时机(三)

http://www.nowcoder.com/practice/2fea2b0349df4f7689f6f5a882e4f129

import java.util.*;

public class Main {
    public static void main (String[] args) {
        // 1. 状态
        // 买入状态,卖出状态

        // 2. 选择
        // 买入,卖出,不动
        // 只能操作两笔
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int price = sc.nextInt();
      
        // 3. dp定义
        // buy1 代表第1次买入的股票收益
        // sell1代表第1次卖出的股票收益
        // buy2 代表第2次买入的股票收益
        // sell2代表第2次卖出的股票收益
      
        // 4. 基本状态
        // buy1=-price, sell1=0
        // buy2=-price, sell2=0
        int buy1 = -price, sell1 = 0;
        int buy2 = -price, sell2 = 0;
        
        for (int i = 1; i < n; i++) {
            price = sc.nextInt();
            // 5. 转移方程
            buy1  = Math.max(buy1, - price);
            sell1 = Math.max(sell1, buy1 + price);
            buy2  = Math.max(buy2, sell1 - price);
            sell2 = Math.max(sell2, buy2 + price);
        }
        System.out.println(sell2);
    }
}
全部评论

相关推荐

11-03 14:38
重庆大学 Java
AAA求offer教程:我手都抬起来了又揣裤兜了
点赞 评论 收藏
分享
冲芭芭拉鸭:你这图还挺新,偷了。
投递美团等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务