问题描述:给定一个数据a,数组中的每个元素表示对应下标的股票价格。
如int a[5] = [3,5,7,3,6]表示股票在五天内的价格分别是3,5,7,3,6。请设计算法获取买卖股票的最大利润,并给出卖出股票的日期标号。如你买入股票时是3,在股票价格为7时卖出,利润为4最大,返回价格7的标号2。
采用动态规划的思想,利用Java语言编写核心代码;
class buy {
public int maxProfit(int[] prices) { //给定股票的价格数组
int profit [] = new int[prices.length]; //记录对应每一天的利润
profit[0] = 0; //单天买入卖出没有利润
int maxProfit = 0; //记录最大利润
for(int i = 1;i < profit.length;i++) {
//获取后一天的利润(判断是否有利润)
profit[i] = Math.max(0,prices[i] - prices[i - 1] + profit[i - 1]) ;
if(profit[i] >= maxProfit) {
maxProfit = profit[i];
}
}
return maxProfit;
}
}