122. 买卖股票的最佳时机 II(贪心算法)


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;
    }
}

文章作者: fFee-ops
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 fFee-ops !
评论
  目录