🤖
Data Structures and Algorithms
  • CS Theory And Problems
  • Big O
    • Big O Notation
  • Algorithms
    • Binary Search
    • Breadth First Search (BFS)
    • Depth First Search (DFS)
    • Dynamic Programming
    • Kadane's Algorithm
    • Kahn's Algorithm
    • Quickselect
    • Recursion
    • Sorting Algorithms
    • Sliding Window
  • Data Structures
    • Binary Heap
    • Graph
    • Linked List
    • Trees
  • Problems
    • LeetCode
      • 1. Two Sum
      • 3. Longest Substring Without Repeating Characters
      • 5. Longest Palindromic Substring
      • 11. Container With Most Water
      • 15. 3 Sum
      • 19. Remove Nth Node From End of List
      • 20. Valid Parentheses
      • 33. Search in Rotated Sorted Array
      • 49. Group Anagrams
      • 53. Maximum Subarray
      • 55. Jump Game
      • 56. Merge Intervals
      • 76. Minimum Window Substring
      • 98. Validate Binary Search Tree
      • 105. Construct Binary Tree from Preorder and Inorder Traversal
      • 121. Best Time to Buy and Sell Stock
      • 133. Clone Graph
      • 141. Linked List Cycle
      • 152. Maximum Product Subarray
      • 153. Find Minimum in Rotated Sorted Array
      • 200. Number of Islands
      • 206. Reverse Linked List
      • 207. Course Schedule
      • 217. Contains Duplicate
      • 226. Invert Binary Tree
      • 238. Product of Array Except Self
      • 242. Valid Anagram
      • 297. Serialize and Deserialize Binary Tree
      • 347. Top K Frequent Elements
      • 417. Pacific Atlantic Water Flow
      • 424. Longest Repeating Character Replacement
      • 435. Non-overlapping Intervals
      • 647. Palindromic Substrings
Powered by GitBook
On this page
  • Description
  • Solution
  1. Problems
  2. LeetCode

121. Best Time to Buy and Sell Stock

Description

See https://leetcode.com/problems/best-time-to-buy-and-sell-stock/

Solution

Pretty straight forward problem and solution. Iterate through the array looking for a lower price than the current one (which is initialized to the first element in the list). Profit is the difference between the current item and the lowest price. Keep track of the max profit.

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        low_price = prices[0]
        profit = 0
        # start at 1 since element 0 is used to initialize the low_price
        for i in range(1, len(prices)):
            if prices[i] <= low_price:
                low_price = prices[i]
            else:
                profit = max(profit, prices[i] - low_price)
        return profit

Space O(1), Time O(N)

Previous105. Construct Binary Tree from Preorder and Inorder TraversalNext133. Clone Graph

Last updated 3 years ago