• 股票交易日


    在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行)。给出一天中的股票变化序列,请写一个程序计算一天可以获得的最大收益。请采用实践复杂度低的方法实现。

    给定价格序列prices及它的长度n,请返回最大收益。保证长度小于等于500。

    测试样例:
    [10,22,5,75,65,80],6
    返回:87
    思路:1、先将价格序列分为左右两部分1<=n<=n-3
       2、求出左部分的最大收益
       3、求出右部分的最大收益
       4、左部分的收益加上右部分的收益
    class Stock {
    public:
        int maxProfit(vector<int> prices, int n) {
            // write code here
            int max=0;
            for(int i=1;i<=n-3;i++){//A[i]为第一次卖出的股票价格
                 int lmax=prices[1]-prices[0];
                 int rmax=prices[i+2]-prices[i+1];
                for(int j=0;j<=i;j++){
                   for(int jj=j;jj<=i;jj++){
                         if(lmax<prices[jj]-prices[j]){
                         lmax=prices[jj]-prices[j];
                      }   
                   }
                }
                for(int m=i+1;m<=n-1;m++){
                    for(int mm=m;mm<=n-1;mm++){
                        if(rmax<prices[mm]-prices[m]){
                            rmax=prices[mm]-prices[m];
                        }
                    }
                }
               if(max<lmax+rmax){
                  max=lmax+rmax;
               }
            }
            return max;
        }
    };
  • 相关阅读:
    自定义注解(注解扫描)
    Redis缓存淘汰策略
    粘包问题
    MySQL事务日志
    分布式事务
    https的工作流程
    CAP原则和BASE理论
    设计模式(一)
    限流的原理以及常用算法
    散列冲突(哈希碰撞)的解决办法
  • 原文地址:https://www.cnblogs.com/dingou/p/5804966.html
Copyright © 2020-2023  润新知