• 【leetcode】123. Best Time to Buy and Sell Stock III


    @requires_authorization
    @author johnsondu
    @create_time 2015.7.22 19:04
    @url [Best Time to Buy and Sell Stock III](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/)
    /************************
     * @description: dynamic programming.
     *    从前后分别求出当前所能够得到的最大值,最后相加而得
     *    详细操作是,设置一个最小值,然后不断更新最小值。然后不断更新最大值。

    前后反向累加求得最大值 * @time_complexity: O(n) * @space_complexity: O(n) ************************/ class Solution { public: int maxProfit(vector<int>& prices) { const int len = prices.size(); if(len < 2) return 0; int maxFromHead[len]; maxFromHead[0] = 0; int minprice = prices[0], maxprofit = 0; for(int i = 1; i < len; i ++) { minprice = min(prices[i-1], minprice); if(maxprofit < prices[i] - minprice) maxprofit = prices[i] - minprice; maxFromHead[i] = maxprofit; } int maxprice = prices[len-1]; int res = maxFromHead[len-1]; maxprofit = 0; for(int i = len-2; i >= 0; i --) { maxprice = max(maxprice, prices[i+1]); if(maxprofit < maxprice - prices[i]) maxprofit = maxprice - prices[i]; if(res < maxFromHead[i] + maxprofit) res = maxFromHead[i] + maxprofit; } return res; } };

    @requires_authorization
    @author johnsondu
    @create_time 2015.7.22 19:04
    @url [Best Time to Buy and Sell Stock III](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/)
    /************************
     * @description: dynamic programming.
     *    超时做法:从1開始。分成前后两段,最后求得前后两段的最大值
     * @time_complexity:  O(n^2)
     * @space_complexity: O(n)
     ************************/
    class Solution {
    public:
        int maxProfit(vector<int>& prices) {
            int p_size = prices.size();
            if(p_size < 2) return 0;
            if(p_size < 3) {
                return prices[1] - prices[0] > 0 ?

    prices[1] - prices[0]: 0; } int ans = 0; for(int i = 1; i < p_size; i ++) { vector<int> dp1, dp2; for(int j = 1; j <= i; j ++) { dp1.push_back(prices[i] - prices[i-1]); } for(int j = i + 1; j < p_size; j ++) { dp2.push_back(prices[j] - prices[j-1]); } int dp1_size = dp1.size(); int ans1 = 0; int cur = 0; for(int j = 0; j < dp1_size; j ++) { cur = cur + dp1[j]; if(cur < 0) { cur = 0; continue; } if(cur > ans1) ans1 = cur; } int dp2_size = dp2.size(); int ans2 = 0; cur = 0; for(int j = 0; j < dp2_size; j ++) { cur = cur + dp2[j]; if(cur < 0) { cur = 0; continue; } if(cur > ans2) ans2 = cur; } ans = max(ans, ans1 + ans2); } return ans; } };

  • 相关阅读:
    noip模拟70
    noip模拟测试62
    noip模拟66
    noip模拟67
    noip模拟64
    QATF自动化测试框架
    自动化领域谁主沉浮
    TestComplete9.2增强支持 Embarcadero RAD Studio XE3、Ext JS
    QTP对SAP的支持
    如何将makefile构建的工程导入C++test?
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7160210.html
Copyright © 2020-2023  润新知