Skip to content
On this page

121. Best Time to Buy and Sell Stock share

Problem Statement

You are given an array prices where prices[i] is the price of a given stock on the ith day.

You want to maximize your profit by choosing a single day to buy one stock and choosing a different day in the future to sell that stock.

Return the maximum profit you can achieve from this transaction. If you cannot achieve any profit, return 0.

 

Example 1:

Input: prices = [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.
Note that buying on day 2 and selling on day 1 is not allowed because you must buy before you sell.

Example 2:

Input: prices = [7,6,4,3,1]
Output: 0
Explanation: In this case, no transactions are done and the max profit = 0.

 

Constraints:

  • 1 <= prices.length <= 105
  • 0 <= prices[i] <= 104

Solution:

rs
impl Solution {
    pub fn max_profit(prices: Vec<i32>) -> i32 {
        let (mut profit, mut min) = (0, prices[0]);

        // loop through the vector, starting at 1
        for i in 1..prices.len() {
            // if the current value is less than the minimum value, set the minimum value to the current value
            if prices[i] < min {
                min = prices[i];
            }
            // else if the current value minus the minimum value is greater than the current profit, set the profit to the current value minus the minimum value
            else if prices[i] - min > profit {
                profit = prices[i] - min;
            }
        }

        profit
    }
}

go
package main

func maxProfit(prices []int) int {
	profit, min := 0, prices[0]

	for _, price := range prices {
		// if the current price is lower than the min price, update the min price to the current price
		// else if the current price minus the min price is greater than the profit, update the profit to the current price minus the min price
		if price < min {
			min = price
		} else if price-min > profit {
			profit = price - min
		}
	}

	return profit
}

...


Released under the MIT License.