zoukankan      html  css  js  c++  java
  • 【LeetCode】Best Time to Buy and Sell Stock II

    Say you have an array for which the ith element is the price of a given stock on day i.

    Design an algorithm to find the maximum profit. You may complete at most two transactions.

    Note:
    You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).

    这个更简单了,题目要求可以多次买卖,但是同一时间只能有一股在手里。
    这样就可以在每次上升子序列之前买入,在上升子序列结束的时候卖出。相当于能够获得所有的上升子序列的收益。
    而且,对于一个上升子序列,比如:5,1,2,3,4,0 中的1,2,3,4序列来说,对于两种操作方案:
    一,在1买入,4卖出;
    二,在1买入,2卖出同时买入,3卖出同时买入,4卖出;
    这两种操作下,收益是一样的。


    所以算法就是:从头到尾扫描prices,如果i比i-1大,那么price[i] – price[i-1]就可以计入最后的收益中。这样扫描一次O(n)就可以获得最大收益了。

    public class Solution {
        public int maxProfit(int[] prices) {
            if(prices.length==0||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;
            
        }
    }
  • 相关阅读:
    最短路变形题目 HDU多校7
    交换一个数字的任意两个位置,指定K次的最值
    七彩线段
    带限制的广搜 codeforces
    在一个矩阵内求一个最长上升子序列
    函数,以及三元运算符
    文件操作
    基础数据类型补充以及python编码
    深浅copy,is和==区别,集合,列表的操作
    字典和枚举
  • 原文地址:https://www.cnblogs.com/yixianyixian/p/3718496.html
Copyright © 2011-2022 走看看