Java 题解 | #牛群买卖计划#

牛群买卖计划

https://www.nowcoder.com/practice/3e4ae511b4a941b788da5077b08a7d07

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param prices int整型一维数组
     * @return int整型
     */
    public int maxProfit (int[] prices) {
        // write code here
        int buy1 = Integer.MAX_VALUE;
        int sell1 = 0;
        int buy2 = Integer.MAX_VALUE;
        int sell2 = 0;
        int buy3 = Integer.MAX_VALUE;
        int sell3 = 0;

        for (int price : prices) {
            // 第一次买入的最低价格
            buy1 = Math.min(buy1, price);
            // 第一次卖出后的最大利润
            sell1 = Math.max(sell1, price - buy1);
            // 第二次买入的最低价格,考虑第一次卖出后的利润
            buy2 = Math.min(buy2, price - sell1);
            // 第二次卖出后的最大利润,考虑第二次买入后的利润
            sell2 = Math.max(sell2, price - buy2);
            // 第三次买入的最低价格,考虑第二次卖出后的利润
            buy3 = Math.min(buy3, price - sell2);
            // 第三次卖出后的最大利润,考虑第三次买入后的利润
            sell3 = Math.max(sell3, price - buy3);
        }

        return sell3;
    }
}

编程语言是Java。

该题考察的知识点是买卖股票的最佳时机,动态规划。

代码的文字解释如下:maxProfit方法用于计算买卖股票的最大利润,初始化了6个变量:buy1、sell1、buy2、sell2、buy3、sell3,用来记录三次买入和卖出的价格和利润。

通过一次遍历股票价格数组prices,更新这六个变量的值。buy1记录第一次买入的最低价格,sell1记录第一次买入后的最大利润;buy2记录第二次买入的最低价格,sell2记录第二次买入后的最大利润;buy3记录第三次买入的最低价格,sell3记录第三次买入后的最大利润。

在每次遍历时,更新buy1、sell1、buy2、sell2、buy3、sell3的值,确保它们分别记录每次买入和卖出的最佳价格和利润。返回sell3,即第三次卖出后的最大利润。

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-04 18:06
点赞 评论 收藏
分享
星辰再现:裁员给校招生腾地方
点赞 评论 收藏
分享
07-01 13:37
门头沟学院 Java
steelhead:不是你的问题,这是社会的问题。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务