123. Best Time to Buy and Sell Stock III - LeetCode Solution


Dynamic Programming

Python Code:

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        if not prices:
            return 0
        
        
        max = 0
        curr = prices[-1]
        
        for i in range(len(prices)-2,-1,-1):
            if prices[i]>=curr:
                curr = prices[i]
                
            else:
                mn = prices[0]
                mx = 0
                
                for j in prices[0:i]:
                    if mn>j:
                        mn = j
                    elif j-mn>mx:
                        mx = j-mn
                        
                profit = curr-prices[i] + mx
                if max<profit:
                    max = profit

        return max
        


Comments

Submit
0 Comments
More Questions

1486B - Eastern Exhibition
1363A - Odd Selection
131B - Opposites Attract
490C - Hacking Cypher
158B - Taxi
41C - Email address
1373D - Maximum Sum on Even Positions
1574C - Slay the Dragon
621A - Wet Shark and Odd and Even
1395A - Boboniu Likes to Color Balls
1637C - Andrew and Stones
1334B - Middle Class
260C - Balls and Boxes
1554A - Cherry
11B - Jumping Jack
716A - Crazy Computer
644A - Parliament of Berland
1657C - Bracket Sequence Deletion
1657B - XY Sequence
1009A - Game Shopping
1657A - Integer Moves
230B - T-primes
630A - Again Twenty Five
1234D - Distinct Characters Queries
1183A - Nearest Interesting Number
1009E - Intercity Travelling
1637B - MEX and Array
224A - Parallelepiped
964A - Splits
1615A - Closing The Gap