在不同的日子里找到买入/卖出的最大利润

时间:2016-07-10 19:32:37

标签: c++

确定问题在数组中给出了5个值。它们代表您买入和卖出股票的价值。你不能卖,直到你买。所以第一个值是买。你需要找到你获得的最大或最高利润,即使它是负数(因此-1000的利润超过-10000)。你可以假设适当的主要功能和标题在那里。以下代码是我如何解决它:

int solution(prices[]) {

int N = 5;  //assumption is can only buy sell for 5 days so prices = [0-4]


int difference;
int max_profit = -100000000000;

for (int p = 0; p < N; p++)
{
    for (int q = p + 1; q < N; q++)
    {
        difference = prices[q] - prices[p];
        if (difference > max_profit)
        {
            max_profit = difference;
        }
    }
}

return max_profit;

我希望能够解决它而不必包含max_proft = -100000000000。 bc可能有人可能会因为买卖而失去更多。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果您想要max_profit最初可能的最低数量,请使用:

#include <limits>

//...

int max_profit = std::numeric_limits<int>::lowest();

如果有人在股票交易中损失的钱比他们有更多的钱,那么他们就会面临一些严重的问题......

答案 1 :(得分:0)

  

我希望能够解决它,而不必包括max_proft= -100000000000

嗯,你需要以某种方式获得最低起始价值。那么你对它的关注是什么?

您可以获得的最低起始值是std::numeric_limits<int>::lowest();