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

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

    If you were only permitted to complete at most one transaction (i.e., buy one and sell one share of the stock), design an algorithm to find the maximum profit.

    Note that you cannot sell a stock before you buy one.

    Example 1:

    Input: [7,1,5,3,6,4]
    Output: 5
    Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.
                 Not 7-1 = 6, as selling price needs to be larger than buying price.
    

    Example 2:

    Input: [7,6,4,3,1]
    Output: 0
    Explanation: In this case, no transaction is done, i.e. max profit = 0.

    求解购抛股票的最大收益。使用动态规划进行求解。
    全局最优解是局部最优解的最优解。
    局部最优解当前局部最优解和后边的正收益的加和。当局部最优解值为负,说明当前值为最低买入值,恢复局部最优初始值0.
    每前进一位,就比较更新一遍全局最优解。

    代码如下:
    class Solution {
    public:
        int maxProfit(vector<int>& prices) {
            int profit=0,temp=0;
            for(int i=1;i<prices.size();++i){
                temp=max(temp+prices[i]-prices[i-1],0);
                profit=max(profit,temp);
            }
            return profit;
        }
    };
  • 相关阅读:
    Spring.NET学习笔记
    开源项目地址
    委托的实现匿名函数和朗姆达表达式
    c#事件与委托
    c# 时间戳转换
    List 排序
    DDD的好文章
    【转】理解JMeter聚合报告(Aggregate Report)
    【转】JMeter 通过 JDBC 访问 Oracle 和 MySQL
    【转】使用JMeter测试你的EJB
  • 原文地址:https://www.cnblogs.com/cff2121/p/11088820.html
Copyright © 2011-2022 走看看