Java 题解 | #牛群买卖计划III#
牛群买卖计划III
https://www.nowcoder.com/practice/47ce4c953769468e8b8b727af3cbebf5
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param prices int整型一维数组 * @return int整型 */ public int maxProfitIII (int[] prices) { // write code here int ans = 0; if (prices.length <= 1) return 0; int t = prices[prices.length - 1]; for (int i = prices.length - 2; i >= 0; i--) { if (prices[i] < t) ans += t - prices[i]; else t = prices[i]; } return ans; } }
编程语言是Java。
该题考察的知识点是贪心算法。
使用贪心算法来计算最大利润。判断数组长度是否小于等于1,如果是则直接返回0,因为无法进行交易获取利润。然后初始化变量t为最后一个价格prices[prices.length - 1]
。
使用倒序循环遍历数组prices
,从倒数第二个元素开始向前遍历。在每一次循环中,如果当前价格prices[i]
小于变量t
,则计算差值(即卖出价格减去买入价格)并加到ans
中;否则更新变量t
为当前价格prices[i]
,表示以当前价格作为买入价继续追踪。
返回计算得到的ans
作为结果,即为所求的最大利润。