题解 | #股票(无限次交易)#
股票(无限次交易)
http://www.nowcoder.com/practice/9e5e3c2603064829b0a0bbfca10594e9
贪心解法, 写的不对的欢迎指正!
时间:O(n)
空间:O(1)
// NC134股票(无限次交易) //最大利润即为每个上升段的差额 class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 计算最大收益 * @param prices int整型vector 股票每一天的价格 * @return int整型 */ int maxProfit(vector<int>& prices) { // write code here int sum=0;//总利润 int len=prices.size(); if(len<=1) return 0; int max_tmp=prices[0];//默认第一个是最大的 int min_tmp=prices[0];//默认第一个是最小的 for(int i=1;i<len;++i){ if(prices[i]<prices[i-1]){ //如果当天股价 比前一天低 //就更新当前最大利润为:max减去min,并累加到sum //更新最低股价为:当天价格。并将最高股价也更新成一样的 if(max_tmp>min_tmp){ sum+= max_tmp-min_tmp ; } min_tmp=prices[i];//更新最低股价为:当天价格。 max_tmp=prices[i];//更新最高股价为:当天价格。 }else{ max_tmp=prices[i];//如果当天股价 >前一天,最高价格更新为当前的 } } return sum+max_tmp-min_tmp;//最后一天股价可能比前一天高 } };