因为要低价买,高价卖,实际就是每一个递增序列,起点到终点的差即一次交易,所有的递增序列加起来。用一个标志前进,遇到下一个当前大于标志的,证明还在递增序列,求差加,更新标志;否则不在递增序列,直接更新标志,开始下一轮。
public class T122 { public int maxProfit(int[] prices) { int num=0;//记录每个递增序列的首尾差的和 int temp=prices[0]; for (int i = 1; i < prices.length; i++) { if (prices[i]>temp){ num+=prices[i]-temp; temp=prices[i]; } else { temp=prices[i]; } } return num; } }
这道题目前为止最简单,没什么好说的,递增序列的处理和标志可能需要思考一下。