leetcode【数组】-----122.Best Time to Buy and Sell Stock II(买卖股票最佳时机II)

版权声明: https://blog.csdn.net/zl6481033/article/details/88409714

1、题目描述

2、分析

        给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

        这道题和前面那道题很像,只是前面那道题只能进行一次买卖,这道是可以进行多次。这道题的解题思路还是可以参考上道题的方法,将数组的值绘制在图中。我们可以在斜坡上爬升并一直获取利润,因为这道题是不限买卖次数,有效的利用图中的峰值和谷值,在数组中其实就是连续增加数组连续的数字之间的差值。只要第二个数字大于第一个数字,那么就将差值加入到利润中。

3、代码

class Solution {
public:
    int maxProfit(vector<int>& prices){
        if(prices.size()==0) return 0;
        int res=0;
        for(int i=0;i<prices.size()-1;++i){
            if(prices[i]<prices[i+1]){
                res+=prices[i+1]-prices[i];
            }
        }
        return res;
    }
};

4、涉及知识点

        学会将题目的目的合理的转化,方便求解。

猜你喜欢

转载自blog.csdn.net/zl6481033/article/details/88409714