题目描述:
题目分析:
这题乍一看似乎有点复杂,但是仔细分析就不难发现,其实判断我当前的操作到底是应该买入还是卖出,只需要跟明天比较即可,同时需要一个布尔值,用来判断当前是否持有股票。
代码:
public class MaxProfit2 {
public static void main(String[] args) {
int[] prices = {7,6,4,3,1};
System.out.println(maxProfit(prices));
}
public static int maxProfit(int[] prices) {
boolean flag = false; //判定当前是否持有股票
if (prices.length<=1)
return 0;
int begin = prices[0]; //初始化买入股票时的价格
int sum = 0;
for (int i = 0; i < prices.length-1; i++) {
if (prices[i]>prices[i+1]&&flag==true){ //如果明天的股票会降价且当前持有股票则卖出
sum += prices[i]-begin;
flag = !flag;
}
if (prices[i]<prices[i+1]&&flag==false){ //如果明天的股票会涨价且当前不持有股票,则买入
begin = prices[i];
flag = !flag;
}
}
if (prices[prices.length-1]>begin&&flag==true)
sum += prices[prices.length-1]-begin;
return sum;
}
}