# 1. Introduction

"Best Time to Buy and Sell Stock" is a popular problem in the realm of financial computing and array manipulation. The challenge involves analyzing an array of stock prices and determining the optimal time to buy and sell a stock for the maximum profit. This problem is a classic example of using simple array traversal techniques for finding optimal solutions.

## Problem

Given an array *prices* where *prices[i]* is the price of a given stock on the *i*th day, the goal is to maximize profit by choosing a single day to buy one stock and another day in the future to sell that stock. The task is to return the maximum profit that can be achieved from this transaction, or return 0 if no profit is possible.

# 2. Solution Steps

1. Initialize two variables: *min_price* to store the minimum price encountered so far and *max_profit* to store the maximum profit.

2. Traverse through the array of prices.

3. Update *min_price* with the minimum price found so far.

4. Calculate the profit for each day by subtracting the *min_price* from the current price.

5. Update *max_profit* if the calculated profit for the day is higher than the current *max_profit*.

6. Continue the process for each day in the price array.

7. Return the *max_profit*.

# 3. Code Program

```
def maxProfit(prices):
min_price = float('inf')
max_profit = 0
for price in prices:
min_price = min(min_price, price)
profit = price - min_price
max_profit = max(max_profit, profit)
return max_profit
# Example Usage
print(maxProfit([7,1,5,3,6,4]))
print(maxProfit([7,6,4,3,1]))
```

### Output:

5 0

### Explanation:

**1. Minimum Price Tracking**: *min_price* keeps track of the lowest price seen so far in the array.

**2. Profit Calculation**: For each day, the potential profit is calculated as the difference between the current price and the *min_price*.

**3. Maximum Profit Update**: *max_profit* is updated if the profit for the current day is greater than the existing *max_profit*.

**4. Iterative Approach**: The array is iterated through once, updating *min_price* and *max_profit* as needed.

**5. Result**: The function returns the maximum profit possible from buying and selling a single stock. If no profit is possible, it returns 0.

## Comments

## Post a Comment