题目:算法
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你能够尽量地完成更多的交易(屡次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉以前的股票)。数组
题解:设计
因为能够交易屡次,那么只要今天的股票价格比昨天的高,那么就交易。不用考虑今天的价格比前天的价格高,由于最大利润是一个累加的过程,这是一个典型的贪心算法,固然买卖股票系列均可用动态规划解决,但动态规划的本质是暴力穷举,能用贪心就不用动态规划。下面直接上代码:it
Java版本:io
public int maxProfit(int[] prices) {function
//假现在天的价格低,明天价格高,就今天买明天卖
//假如后天的价格明天还高,不要担忧,由于max= 明天 - 今天 + (后天 - 明天) = 后天 - 今天
let max = 0;
for(let i=1;i<prices.length;i++){
if(prices[i] > prices[i-1]){
max += prices[i] - prices[i-1];
}
}
return max;
};di