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;
        }
    };
  • 相关阅读:
    CSS+JS实现兼容性很好的无限级下拉菜单
    自动切换的JS菜单
    (2)C#连sqlite
    protobuf编译器
    (67) c# 序列化
    (66) c# async await
    (65)C# 任务
    mbatis 入门
    (64)C# 预处理器指令
    (63)C# 不安全代码unsafe
  • 原文地址:https://www.cnblogs.com/cff2121/p/11088820.html
Copyright © 2011-2022 走看看