• Best Time to Buy and Sell Stock III @leetcode


    !由于题意是两次交易,而且这两次买卖不能再时间上重叠,是两个独立的问题,联想到分而治之的策略,将{0,1,...,i,...,n-1,n}的问题拆分为求{0,1,..,i}和{i+1,...,n-1,n}两个子问题,而这两个子问题又刚好是Best Time to Buy and Sell Stock I的解题思路。

     1 int maxProfit(vector<int> &prices) {
     2         // IMPORTANT: Please reset any member data you declared, as
     3         // the same Solution instance will be reused for each test case.
     4         if(prices.size() <= 1)
     5             return 0;
     6         int i,min;
     7         vector<int> pre;
     8         int n = prices.size();
     9         pre.resize(n);
    10         pre[0] = 0;
    11         min = prices[0];
    12         //create the feature list for pre
    13         for(i=1;i<n;++i)
    14         {
    15             if(prices[i]<min) min = prices[i];
    16             if(prices[i] - min > pre[i-1])
    17                 pre[i] = prices[i] - min;
    18             else
    19                 pre[i] = pre[i-1];
    20         }
    21 
    22         int res,max,finalres;
    23         res = finalres = 0;
    24         max = prices[n-1];
    25         for(i = n-2;i>=0 ;--i)
    26         {
    27             if(prices[i]>max) max = prices[i];
    28             if(max - prices[i] > res)
    29                 res = max - prices[i];
    30             if(finalres < pre[i] + res )
    31                 finalres = pre[i] + res;
    32         }
    33         return finalres;
    34     }

    #这题TLE了多次,开始我TM已经向分而治之的方向考虑了,结果由于Best Time to Buy and Sell Stock I的解题思路使用的是特征向量的方式,并不适用与本题拆分成小问题后的治理,导致TLE。因为我建立了一个二维特征向量,来计算最佳投资,貌似OJ提供的数据以万记,二维显然不行,我太面了。后来考虑这题无非是找出4个点(A,B,C,D)(ABCD按时间顺序A<B<C<D),求h(A,B)+h(C,D)最大为多少?(h(A,B)表示这两个时间点的差值,当然prices(B)>prices(A)),而结果的这四个点一定满足:A,C为谷值,B,D为峰值,然后我就建了两个vector,分别保存谷值和峰值的时间点(需要O(n)),然后...然后就没有然后了。再然后,我就无耻地谷歌了。

    =不能再这么安奈不住渴望ac的跃进了(跃进这词好像不符合我的年龄,不过这个词太精确了),过度渴望ac会走火入魔,忘却算法本身的乐趣。按cc的说法:

    1.这题不太会,很可能满足了进步的条件,应该好好把握;

    2.多思考几天,过早google等于放弃自我。

    哦了,反思完毕,睡觉,我可不想脖子疼:)

  • 相关阅读:
    测试AtomicInteger的可见性、有序性、原子性
    java实现hssf导出excel文件及自定义选择路径工具类
    map转换成com.google.gson.JsonObject
    String[]转List<String>
    classLoader打破双亲委托机制
    类加载器的加密解密
    自定义类加载器和父委托机制
    java中获取项目路径
    JVM内置三大类加载器详细介绍
    初识继承和多态
  • 原文地址:https://www.cnblogs.com/rogarlee/p/3420596.html
Copyright © 2020-2023  润新知