leetcode 122. Best Time to Buy and Sell Stock II(买卖股票的最佳时机 II)--Java题解


题目描述

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 


示例

输入:[7, 1, 5, 3, 6, 4]

输出: 7

解释:在第2天买入,在第3天卖出,利润为4,在第4天买入,第5天卖出,利润为3,总利润为4。

输入:[1, 2, 3, 4, 5]

输出:4

解释:在第1天买入,在第5天卖出,利润为4,总利润为4。

输入:[7, 6, 4, 3, 1]

输出:0

解释:没有交易完成,总利润为0。


解题思路

本题并没有要求输出具体哪一天买入、哪一天卖出,所以只需要将最后的总利润输出即可。

在遍历的过程中,只要后一元素大于前一元素,就将利润更新为之前的利润加上现在的两元素之差,最后输出利润即可。


代码

public int maxProfit(int[] prices) {
    int result = 0;
    for (int i = 1; i < prices.length; i++) {
        if (prices[i] > prices[i - 1]) result += prices[i] - prices[i - 1];
    }
    return result;
}

执行结果


欢迎各位大神指点 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值