Dowemo

Topics

Say you've an array for which the th element is the price.

A if you were only permitted to complete at most one tra action ( ie, buy one and, share of shares ).

示例1:





Input: [7, 1, 5, 3, 6, 4]


Output: 5



max. difference = 6-1 = 5 (not 7-1 = 6, as selling price needs to be larger than buying price)








example 2:





Input: [7, 6, 4, 3, 1]


Output: 0



In this case, no transaction is done, i.e. max profit = 0.








Analysis and solution

public int maxProfit(int[] prices) {


 if (prices == null || prices.length == 0) {


 return 0;


 }


 int profit = 0, max = 0;


 for (int i = 1; i <prices.length; i++) {


 profit += prices[i] - prices[i - 1];


//【模拟】试探性买入。(假设可以多次购买,如果到某个地方赔了,那么重新开始)


//当在前面买了股票后,对于当前有削弱作用,我们就不会在前面买了。(重新开始买入)


 if (profit <0) {


 profit = 0;


 } else if (max <profit) {


 max = profit;


 }


 }


 return max;


 }










Copyright © 2011 Dowemo All rights reserved.    Creative Commons   AboutUs