zoukankan      html  css  js  c++  java
  • 买卖股票专题系列2---买卖股票的最佳时机2

    题目:

      给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

    题解:

      由于可以交易多次,那么只要今天的股票价格比昨天的高,那么就交易。不用考虑今天的价格比前天的价格高,因为最大利润是一个累加的过程,这是一个典型的贪心算法,当然买卖股票系列都可用动态规划解决,但动态规划的本质是暴力穷举,能用贪心就不用动态规划。下面直接上代码:

    Java版本:

    public int maxProfit(int[] prices) {
    
            if(prices == null || prices.length <=1) return 0;
            int max = 0;
            for(int i=1;i<prices.length;i++){
                //只要今天的价格比昨天的价格高,就交易
                if(prices[i] > prices[i-1]) max += prices[i] - prices[i-1];
            }
            return max;
        }
    JS版本:
     
     var maxProfit = function(prices) {
        //假如今天的价格低,明天价格高,就今天买明天卖
        //假如后天的价格明天还高,不要担心,因为max= 明天 - 今天 + (后天 - 明天) = 后天 - 今天
        let max = 0;
        for(let i=1;i<prices.length;i++){
          if(prices[i] > prices[i-1]){
            max += prices[i] - prices[i-1];
          }
        }
        return max;
      };
  • 相关阅读:
    sql获取当天零点
    byte[]和InputStream的相互转换
    ResultSet获取记录条数
    Java:String和Date、Timestamp之间的转换
    查询表中blob字段的大小
    Oracle中start with...connect by子句的用法
    oracle创建序列,并插入记录
    关于使用JSONArray.fromObject()方法和引入net.sf.json包所需要的jar包支持
    css来控制img正方形自适应
    上下固定中间自适应
  • 原文地址:https://www.cnblogs.com/bobobjh/p/14414641.html
Copyright © 2011-2022 走看看