# Best Time to Buy and Sell Stock

## Question

What is the maximum profit that can be made by buying and selling a single stock within a given array of daily stock prices?

Example 1

`None`

## Solution

- ▭
- ▯

all//Best Time to Buy and Sell Stock.py

# Python Program for Best Time to Buy and Sell Stock

# Problem Statement:

# 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 (i.e., buy one and sell one share of the stock),

# design an algorithm to find the maximum profit.

# Note that you cannot sell a stock before you buy one.

# Input: [7,1,5,3,6,4]

# Output: 5

# Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.

# Not 7-1 = 6, as selling price needs to be larger than buying price.

# Algorithm:

# 1. Create a variable called max_profit and set it to 0. This will keep track of the maximum profit.

# 2. Iterate through the list of stock prices.

# 3. For each iteration, calculate the difference between the current price and the minimum price seen so far.

# 4. Update the max_profit variable if the difference is greater than the max_profit.

# 5. Update the minimum price seen so far.

# 6. Return the max_profit.

def maxProfit(prices):

max_profit = 0

min_price = float('inf')

for price in prices:

min_price = min(min_price, price)

profit = price - min_price

max_profit = max(max_profit, profit)

return max_profit

# Driver function

prices = [7, 1, 5, 3, 6, 4]

print("Maximum Profit:", maxProfit(prices))

all//Best Time to Buy and Sell Stock.py

# Python Program for Best Time to Buy and Sell Stock

# Problem Statement:

# 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 (i.e., buy one and sell one share of the stock),

# design an algorithm to find the maximum profit.

# Note that you cannot sell a stock before you buy one.

# Input: [7,1,5,3,6,4]

# Output: 5

# Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.

# Not 7-1 = 6, as selling price needs to be larger than buying price.

# Algorithm:

# 1. Create a variable called max_profit and set it to 0. This will keep track of the maximum profit.

# 2. Iterate through the list of stock prices.

# 3. For each iteration, calculate the difference between the current price and the minimum price seen so far.

# 4. Update the max_profit variable if the difference is greater than the max_profit.

# 5. Update the minimum price seen so far.

# 6. Return the max_profit.

def maxProfit(prices):

max_profit = 0

min_price = float('inf')

for price in prices:

min_price = min(min_price, price)

profit = price - min_price

max_profit = max(max_profit, profit)

return max_profit

# Driver function

prices = [7, 1, 5, 3, 6, 4]

print("Maximum Profit:", maxProfit(prices))