zoukankan      html  css  js  c++  java
  • 122. Best Time to Buy and Sell Stock II

    一、题目

      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;
        }
  • 相关阅读:
    session机制、cookie机制
    TCP报头格式
    python中with语句的使用
    html一些东东
    jquery 几点注意事项
    C# 一些小东东
    Microsoft Jet 数据库引擎找不到对象'Sheet1$_'。请确定对象是否存在,并正确地写出它的名称和路径
    DataTable Select查询
    js求指定时间的周一和周日
    asp.net 页面执行过程
  • 原文地址:https://www.cnblogs.com/skillking/p/9749684.html
Copyright © 2011-2022 走看看