摘要: 题目要求可以多次买卖,但是同一时间只能有一股在手里。 这样就可以在每次上升子序列之前买入,在上升子序列结束的时候卖出。相当于能够获得所有的上升子序列的收益。而且,对于一个上升子序列,比如:5,1,2,3,4,0 中的1,2,3,4序列来说,对于两种操作方案:一,在1买入,4卖出;二,在1买入,2卖出同时买入,3卖出同时买入,4卖出;这两种操作下,收益是一样的。所以算法就是:从头到尾扫描prices,如果i比i-1大,那么price[i] – price[i-1]就可以计入最后的收益中。这样扫描一次O(n)就可以获得最大收益了。class Solution {public: int m... 阅读全文
posted @ 2013-05-28 09:53 NinaGood 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 从前往后,用当前价格减去此前最低价格,就是在当前点卖出股票能获得的最高利润。扫描的过程中更新最大利润和最低价格就行了。O(n)大数据48ms 过class Solution {public: int maxProfit(vector<int> &prices) { // Start typing your C/C++ solution below // DO NOT write int main() function int min=0x7fffffff; int max= 0; for( int i ... 阅读全文
posted @ 2013-05-28 09:08 NinaGood 阅读(94) 评论(0) 推荐(0) 编辑