题解 | #牛群买卖计划III# java
牛群买卖计划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.
该题考察的知识点:我用的方法使用的算是暴力解法了,利用循环控制流即可。
代码的文字解释:。
- 创建一个整型变量
ans
并初始化为 0,用于保存最终的结果。 - 如果传入的数组长度小于等于 1,直接返回 0,因为无法进行交易。
- 创建一个整型变量
t
并初始化为数组最后一个元素的值,作为初始比较值。 - 使用循环从数组倒数第二个元素开始遍历到第一个元素。
- 判断当前价格是否小于
t
,如果成立则说明可以进行交易,计算差价并累加到ans
中。 - 否则,更新
t
为当前价格,以便在后续比较中找到更高的卖出价格。 - 循环结束后,返回累加的结果
ans
,即最大利润。