开发者社区> nomasp> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

LeetCode 122 Best Time to Buy and Sell Stock II(股票买入卖出的最佳时间 II)

简介: 版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/50829772 翻译 话说你有一个数组,其中第i个元素表示第i天的股票价格。
+关注继续查看
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/50829772

翻译

话说你有一个数组,其中第i个元素表示第i天的股票价格。

设计一个算法以找到最大利润。你可以尽可能多的进行交易(例如,多次买入卖出股票)。

然而,你不能在同一时间来多次交易。(例如,你必须在下一次买入前卖出)。

原文

Say you have an array for which the ith element is the price of a given stock on day i.

Design an algorithm to find the maximum profit. You may complete as many transactions as you like 
(ie, buy one and sell one share of the stock multiple times). 

However, you may not engage in multiple transactions at the same time 
(ie, you must sell the stock before you buy again).

分析

其实很简单的一道题嘛,一开始想复杂了……

举了栗子:

// 4 7 8 2 8
最大利润很明显是 (8 - 4) + (8 - 2) = 10
就因为这个式子让我想复杂了:首先要找到一个极小值4,然后找到极大值8;然后找到极小值2,然后找到极大值8;balabala……

其实换一种思路,(7 - 4) + (8 - 7) + (8 - 2)
区别在于,直接将后一个数减前一个数就好了呀,只不过如果后一个数比前一个数小的话就不考虑而已。

代码

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Best Time to Buy and Sell Stock II
Say you have an array for which the ith element is the price of a given stock on day i. Design an algorithm to find the maximum profit.
698 0
+关注
542
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载