zoukankan      html  css  js  c++  java
  • LeetCode OJ 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 (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit.

    【思路】

    我么知道,如果要获得利润,售出的价格必须要高出买入的价格,而且出售的日期要大于买入的日期。因此我们在最低时候买入,在最高的时候卖出。从第一天开始,吧第一天的价格设置为当前最低价格,如果后一天的价格高于最低价,我们就记录此时的价格差,如果此时的利润大于之前的最高利润则把它设置为当前最大利润,然后下标向后移动。如果有一天的价格低于当前最低价格,我们就把当前价格设置为最低价格,然后继续上述过程,直到遍历到数组末尾。这个过程其实是把数组分为一段一段,每一段的开始都是这一段范围的内的最低值。举个例子:[2,24,4,1,3,7]红色的一段中2是最小值,24是最大值。绿色的一段中1是最小值,7是最大值。

    代码如下:

     1 public class Solution {
     2     public int maxProfit(int[] prices) {
     3         int min = 0;
     4         int mp = 0;
     5 
     6         for (int i = 1; i < prices.length; i++) {
     7             if (prices[min] > prices[i]) min = i;
     8             else mp = Math.max(mp, prices[i] - prices[min]);
     9         }
    10 
    11         return mp;
    12     }
    13 }
  • 相关阅读:
    如何使用 Python 進行字串格式化
    骨牌摆放问题 POJ 2411(状态压缩DP)
    ACM/OI中C++常用优化(实用/调试/技巧)代码(语法)
    Windows 系统如何完全卸载 VSCode
    Python 在VSCode中使用
    第十一场训练赛
    L1-046 整除光棍 (20分)
    Problem 330A
    POJ 2187 Beauty Contest (凸包 旋转卡壳)
    程序员:写作能收获什么?
  • 原文地址:https://www.cnblogs.com/liujinhong/p/5514142.html
Copyright © 2011-2022 走看看