# LeetCode (Best Time to Buy and Sell Stock I, II, III, IV etc.)

This session includes the best time to buy and sell stock I, II, III, IV, with a cooldown, with a transaction fee.

## 1. Best Time to Buy and Sell Stock (Easy)

• Code:
`    # Time O(N) Space O(1), runtime = 68 ms    def maxProfit(self, prices: List[int]) -> int:                if not prices: return 0                bottom_price = float('inf')        max_profit = 0        for p in prices:            bottom_price = min(bottom_price, p)            max_profit = max(max_profit, p - bottom_price)                return max_profit`

## 2. Best Time to Buy and Sell Stock II (Easy)

• Code:
`    # Time O(N) Space O(1)    def maxProfit(self, prices: List[int]) -> int:                if not prices: return 0                profit = 0        for i in range(1, len(prices)):            diff = prices[i] - prices[i-1]            if diff > 0:                profit += diff                return profit`

## 3. Best Time to Buy and Sell Stock III (Hard)

• Code:
`    # Time O(N) Space O(1), runtime = 72 ms    def maxProfit(self, prices: List[int]) -> int:                if not prices: return 0                t1_price, t2_price = float('inf'), float('inf')        t1_max_profit, t2_max_profit = 0, 0        for p in prices:            t1_price = min(t1_price, p)            t1_max_profit = max(t1_max_profit, p - t1_price)                        t2_price = min(t2_price, p - t1_max_profit)            t2_max_profit = max(t2_max_profit, p - t2_price)                return t2_max_profit`

## 4. Best Time to Buy and Sell Stock IV (Hard)

• Code:
`(to be continued)`

## 5. Best Time to Buy and Sell Stock with Cooldown (Medium):

• Code:
`    # Time O(N) Space O(1)    def maxProfit(self, prices: List[int]) -> int:                if not prices: return 0                profits =  * len(prices)        max_diff = -pricesfor i in range(1, len(prices)):                        profits[i] = max(profits[i-1], prices[i] + max_diff)            cooldown = 0 if i - 2 < 0 else profits[i-2]            max_diff = max(max_diff, cooldown - prices[i])return profits[-1]`

## 6. Best Time to Buy and Sell Stock with Transaction Fee (Medium)

• Code:
`(to be continued)`

Software Engineer