题目描述:
给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
解析:
贪心算法
1.定义一个变量profit,更新最大利润
2.遍历循环数组,遍历到倒数第二个数即可,使每一个prices[i]和prices[i+1]去比较
如果大于,则profit加上prices[i+1] - prices[i]的值
如果小于或者等于,则什么也不用做
3.最后返回最大利润值
Java:
public int maxProfit(int[] prices) { if(prices.length == 0) { return 0; } int profit = 0; for(int i = 0; i < prices.length - 1; i++) { if(prices[i+1] > prices[i]) { profit += prices[i+1] - prices[i]; } } return profit; }
JavaScript:
var maxProfit = function(prices) { if(prices.length === 0) { return 0; } let profit = 0; for(let i = 0; i < prices.length - 1; i++) { if(prices[i+1] > prices[i]) { profit += prices[i+1] - prices[i]; } } return profit; };