121_Best Time to Buy and Sell Stock
Say you have an array for which theithelement is the price of a given stock on dayi.
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.
Example 1:
Example 2:
Solution 1: brute force
Solution 2: dynamic programing
假设已经解决了 i-1 个数字,对于第 i 个数字,我们关心的是,第i 个数字要么能否成为新的买⼊点,要么能否成为新的卖出点
如果是当前i 数字是最⼩值,那么可以作为新的可能的买⼊点,对应着需要更新curMin
如果是(当前值- 最⼩值)更⼤,那么可以作为新的卖出点,对应着需要更新curProfit 只需要遍历⼀次数组,⽤⼀个变量记录遍历过数中的最⼩值,然后每次计算当前值和这个最⼩值之间的差值为利润,然后每次选较⼤的利润来更新。当遍历完成后当前利润即为所求
Time: O(N), Space: O(1)
Last updated
Was this helpful?