122. 买卖股票的最佳时机 II
题目
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(可以多次买卖一支股票)。
注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
解题思路
我们计划每天都进行交易,如果当天的交易差tmp>0那么证明赚了,就把tmp加到总利润profit上去。如果<=0证明没赚钱,那么就跳过,不往profit中添加。最后返回总利润profit。
总的来说策略是所有上涨交易日都买卖(赚到所有利润),所有下降交易日都不买卖(永不亏钱)。即只考虑当日最优,累计成为全局最优
代码
class Solution {
public static int maxProfit(int[] prices) {
if (prices.length == 0) {
return 0;
}
int profit=0;
int tmp=0;//用来表示当天的交易利润,>0就赚了 =0或者<0就亏
for (int i=1;i<prices.length;i++){//假设每天都进行交易
if (prices[i]>prices[i-1]){//利润为正
tmp=prices[i]-prices[i-1];
profit+=tmp; }
}
return profit;
}
}