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

    一、题目

      1、审题

      2、分析

        给出一个数组,让你先已 val1 买入,再 以 val2 卖出,求获得的利润最大是多少。

     二、解答

      1、思路: 

        方法一、

          用遍历 min 记录到当前位置的最小值;

          max 记录到当前数组值的价格卖出为止时获得的最大利润。

        public int maxProfit(int[] prices) {
            if(prices.length < 2)
                return 0;
            int min = prices[0];
            int max = 0;
            for (int i = 1; i < prices.length; i++) {
                if(prices[i] - min > 0 && prices[i] - min > max) {
                    max = prices[i] - min; 
                }
                else if(prices[i] < min)
                    min = prices[i];
            }
            return max;
        }

      

      优化:

        变量 minPrice 直接记录当前的最小价值。

        public int maxProfit3(int[] prices) {
            
            int minprice = Integer.MAX_VALUE, max = 0;
            for (int i = 1; i < prices.length; i++) {
                minprice = Math.min(minprice, prices[i]);
                max = Math.max(max, prices[i] - minprice);
            }
            return max;
        }

      方法二、

        采用 “Kadane's Algorithm.”,即采用求连续子串最大和的思想。

        curMax: 以当前价格卖出时获得的利润(若不赚钱就不卖出)。

          ①、若 curMax = 0, 即代表当前值比前边的值都小;

          ②、若 curMax > 0,即, curMax = (price[i-1] - price[i - 2] + price[i] - price[i-1]) = price[i] - price[i-1]。即为 当前价格为最大值,且减去的是前边的最小值。

        max: 总的过程中的最大利润。

        public int maxProfit2(int[] prices) {
            
            int curMax = 0, max = 0;
            for (int i = 1; i < prices.length; i++) {
                curMax = Math.max(0, curMax += prices[i] - prices[i-1]);
                max = Math.max(curMax, max);
            }
            return max;
        }
  • 相关阅读:
    Appium 走过的坑( Mac+java )--Apple 篇
    不用第三个变量,互换两个变量的值
    PHPUnit 整合 Selenium2 + PhantomJS
    搜索网站的多线程爬虫
    递归地删除目录
    SQL数据库字段添加说明文字
    SQL Server中数据去重单列数据合并
    SQL Server创建链接服务器
    VS2017快捷键
    由于出现以下异常,无法生成模型:“System.Data.StrongTypingException: 表“TableDetails”中列“IsPrimaryKey”的值为 DBNull
  • 原文地址:https://www.cnblogs.com/skillking/p/9748895.html
Copyright © 2011-2022 走看看