标签:for [] 方法 查找 max span and class 最大值
一、题目
1、审题
2、分析
给出一个股票的每日价格的数组,可以多次交易,求最大利润是多大。
二、解答
1、思路:
方法一、
求最大利润,从后往前看,若以现在的价格卖出,前一天的价格买入的话,即可完成这次交易,并获得利润。最终统计所有的利润即可。
public int maxProfit11(int[] prices) { int total = 0; for (int i = 1; i < prices.length; i++) { if(prices[i] > prices[i-1]) total += prices[i] - prices[i-1]; } return total; }
方法二、
①、先查找从当前位置开始的最小值 min,直到后一个数比 min 大则,记录此最小数 min。
②、从 min 后查从当前开始的最大数 max,直到碰到比前一个数小的,则记录此最大值 max。
③、max - min 即为一次获利交易,继续向后查找。
public int maxProfit(int[] prices) { int profit = 0, i = 0; int len = prices.length; while(i < len) { while(i < len -1 && prices[i + 1] <= prices[i]) i++; int min = prices[i++]; while(i < len -1 && prices[i + 1] >= prices[i]) i++; profit += i < len ? prices[i++] - min : 0; } return profit; }
122. Best Time to Buy and Sell Stock II
标签:for [] 方法 查找 max span and class 最大值
原文地址:https://www.cnblogs.com/skillking/p/9749684.html