题解 | #牛群买卖计划# 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, buy2 = Integer.MAX_VALUE,
            buy3 = Integer.MAX_VALUE;
        int sell1 = 0, sell2 = 0, sell3 = 0;
        for (int i = 0; i < prices.length; i++) {
            buy1 = Math.min(buy1, prices[i]);
            sell1 = Math.max(sell1, prices[i] - buy1);
            buy2 = Math.min(buy2, prices[i] - sell1);
            sell2 = Math.max(sell2, prices[i] - buy2);
            buy3 = Math.min(buy3, prices[i] - sell2);
            sell3 = Math.max(sell3, prices[i] - buy3);
        }
        return sell3;
    }
}

该代码使用的编程语言是 Java。

该题考察的知识点是动态规划和数组操作。

代码的详细文字解释如下:

  • 首先,定义了六个变量 buy1buy2buy3sell1sell2sell3,分别表示第一次购买、第二次购买、第三次购买、第一次卖出、第二次卖出、第三次卖出的最大收益。
  • 初始时,将 buy1buy2buy3 分别设置为整型变量的最大值 INT_MAX,将 sell1sell2sell3 设置为 0。
  • 接下来进入循环,遍历给定的价格数组 prices
  • 在每次循环中,更新 buy1 为当前价格和 buy1 的较小值。
  • 更新 sell1 为当前价格减去 buy1 和当前 sell1 的较大值,表示在第一次卖出时的最大收益。
  • 更新 buy2 为当前价格减去第一次卖出的收益和 buy2 的较小值,表示在第二次购买时的成本。
  • 更新 sell2 为当前价格减去第二次购买时的成本和当前 sell2 的较大值,表示在第二次卖出时的最大收益。
  • 更新 buy3 为当前价格减去第二次卖出的收益和 buy3 的较小值,表示在第三次购买时的成本。
  • 更新 sell3 为当前价格减去第三次购买时的成本和当前 sell3 的较大值,表示在第三次卖出时的最大收益。
  • 循环结束后,返回 sell3,表示获得的最大收益。
全部评论

相关推荐

咩咩子_:项目和图形引擎岗没啥关系,最好还是项目和岗位有相关度好点,不然真有面也不一定会问很多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务