标签:
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).
此题应使用贪心算法的思想。我所采用的贪心规则如下:
class Solution { public: int maxProfit(vector<int>& prices) { if (prices.size() == 0) return 0; int buy_in = prices[0], sum = 0; for (int i = 1; i < prices.size(); ++i) { if (prices[i] > buy_in) { sum += prices[i] - buy_in; buy_in = prices[i]; } else { buy_in = prices[i]; } } return sum; } };
后来在论坛上发现了更加简洁的解法,核心思想其实是比较类似的:
int maxProfit(vector<int> &prices) { int ret = 0; for (size_t p = 1; p < prices.size(); ++p) ret += max(prices[p] - prices[p - 1], 0); return ret; }
其实就是只要有涨就先卖再买,但是这种解法更加简洁清楚。
【LeetCode】Best Time to Buy and Sell Stock II
标签:
原文地址:http://www.cnblogs.com/jdneo/p/4738842.html