您的位置:首页 > 其它

leetcode_121 Best Time to Buy and Sell Stock

2016-04-09 21:48 381 查看
题目分析:

用一个数组表示股票每天的价格,数组中第i个数表示股票在第i天的价格。若只允许进行一次交易,即只允许买一只股票,并卖掉,求在这些田中如何进行买卖交易获得的收益最大。

解题思路:

动态规划求解

一遍遍历数组,用一个数记录从开始到现在出现过的最低价格,作为买入价格,假设当天售出,计算收益,如果收益大于最大收益,则更新最大收益。遍历完整个数组后得到最后的最大收益。时间复杂度为O(n),空间复杂度为O(1)。

实现程序

class Solution
{
public:
int maxProfit(vector<int> &prices)
{
if (prices.size() < 2)
return 0;
// 记录最大收益
int profit = 0;
// 记录遍历到当前的以最小价格买入
int min_price = prices[0];
for (int i = 1; i < prices.size(); i++)
{
// 更新收益
profit = max(profit, prices[i] - min_price);
// 更新最小买入价格
min_price = min(min_price, prices[i]);
}
// 返回最大收益
return profit;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode