问题描述:
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
首先判断该数组是否为降序排列,若是降序排列,则返回0,若不是降序排列,则进行计算,使利润最大,并且可以多次买卖,那么就是只要后一天的价格比前一天的价格高,那么此时就抛售出去。
代码:
class Solution {
public int maxProfit(int[] prices) {
int a=prices.length;
int profit=0;
boolean ad=desc(prices,a);
if (!ad)
return 0;
//不是降序,计算最大收益
for (int i=1;i<a;i++){
if (prices[i]>prices[i-1])
profit+=prices[i]-prices[i-1];
}
return profit;
}
public boolean desc(int[] a,int len) {
for(int i=1;i<len;i++){
if ((a[i]-a[i-1])>0)
return true;
}
return false;
}
}
结果: