标题描述:给定一个价格数组,其中prices[i]是给定股票第I天的价格。
设计一个算法来计算你能获得的最大利润。可以完成尽可能多的交易(多次买卖一只股票)。
注意:不能同时参与多笔交易(必须先卖出之前的股票再买入)。
例子见LeetCode官网。
资料来源:LeetCode
链接:3359 leet code-cn . com/problems/best-time-to-buy-and-sell-stock-ii/
版权归领网所有。商业转载请联系官方授权,非商业转载请注明出处。
因为没有买卖次数的限制,所以实际上如果想从多次交易中获得最大的利润,就需要获得正差的累计和。对于任何一段时间的正差异,你其实都可以假设你做了一次买卖操作。如果是连续的正差,实际上可以视为买卖操作。因此,根据贪婪算法,具体的处理过程。
遍历数组,然后把每段的正差加到收益上,最后返回结果,就是期望的最大收益。可以参考LeetCode-121-买卖股票的最佳时机,应该有动态编程的解决方案。
/* * *买卖股票的最佳时机ii */public class leet code _ 122 {/* * *贪婪算法* * @ param prices * @ return */public static int max profit(int[]prices){//预期最大回报值int result=0;for(int I=1;一.价格.长度;I) {//得到各分段的正差,即实际交易操作结果=math.max (0,prices[I]-prices[I-1]);}返回结果;} public static void main(String[]args){ int[]prices=new int[]{ 7,1,5,3,6,4 };//测试用例,预期输出:7 system . out . println(maxprofit(prices));}}【每日寄语】人生一半是烟火,一半是诗。为生活捧烟花,为爱情诗意。