Dowemo
0 0 0 0

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