/* @Title: maxProfit * @Description:
TODO采用贪心策略,首先找到最小买入价格,找到后再去找最大卖出价格,找到最大买出价格后标记下可以买出,然后用最大卖出价格减去最小买入 * 价格来计算本次交易利润,若没找到最大卖出价格,则视作本次没有交易;
* @param @param prices
* @return int * @throws */
public int maxProfit(int[] prices)
{
if(prices.length<=1)
{
return 0;
}
int profit=0;
int buyPrice=0;
int i=0;
while(i<prices.length)
{
//寻找买入价格
if(i<prices.length)
{
buyPrice=prices[i];
i++;
while(i<prices.length)
{
if(prices[i]<buyPrice)
{
buyPrice=prices[i];
i++;
}
else
{
break;
}
}
}
//寻找卖出价格
int prePrice=-1;
boolean flag=false;//标记本次是否能够交易成功
while(i<prices.length)
{
if(prices[i]>buyPrice&&prices[i]>prePrice)
{
prePrice=prices[i];
i++;
flag=true;
}else
{
break;
}
}
if(flag)
profit+=(prePrice-buyPrice);
}
return profit;
}