题目:
给定数组n, 包含n天股票的价格price, 一个人一共最多可以买2手股票,但在第一手股票卖出去前不能买入第二手股票. 如果不买,收益为0. 假设每手只买1股,计算这个人最大收益.答案:
#include#include // 计算[first,last)之间的最大子序列和,并将每一步保存在result中template void MaxSubArray(Iterator first, Iterator last, std::vector &result){ T max = 0; T sum = 0; for(;first!=last;first++){ if(sum<0){ sum = 0; } sum += *first; max = max>sum?max:sum; result.push_back(max); }}// 计算最大收益int MaxProfit(const std::vector &prices){ if(prices.size()<2){ return 0; } // prices数组转换为涨跌幅数组 std::vector v; for(int i=1;i