- 有奇妙的解法
- 分析要获得利润,就是当天卖出前一天买入的的利润,也就是当天价格减去前一天的价格
- 通过这样的运算,可以得到一个新的序列,这个序列就是上一道53的最大子序和的应用了
- 而且把这些子序和中所有正数值都加到一起就是最大利润了
#include <iostream>
#include <vector>
class Solution {
public:
int maxProfit(std::vector<int>& prices) {
int result = 0;
for (int i = 1; i < prices.size(); ++i)
result += std::max(0, prices.at(i) - prices.at(i - 1));
return result;
}
};
int main()
{
Solution s;
std::vector<int> prices {7, 1, 5, 3, 4, 6};
std::cout << s.maxProfit(prices) << std::endl;
return 0;
}
- 也可以使用动规来求解,而且动规的求解更普遍,适用性更广
- 汇总