In this Leetcode Best Time to Buy and Sell Stock problem solution, we have given an array of prices where prices[i] is the price of a given stock on an 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.

## Problem solution in Python.

```class Solution(object):
def maxProfit(self, prices):
buy, profit = prices if len(prices) else -1, 0
for i in range(1, len(prices)):
profit = max(profit, prices[i]-buy)
return profit
```

## Problem solution in Java.

```public class Solution {
public int maxProfit(int[] prices) {
int len = prices.length;
if(len<=1) return 0;
int max = 0;
int low = prices;
for(int i=1; i<len; i++){
max = prices[i]-low>max?prices[i]-low:max;
low = prices[i]<low?prices[i]:low;
}
return max;
}
}
```

## Problem solution in C++.

```class Solution {
public:
int maxProfit(vector<int>& prices)
{
if(prices.size()==1 || prices.size()==0)
return 0;
int profit=0;
int max=prices[prices.size()-1];
for(int i=prices.size()-2;i>=0;--i)
{
if(max-prices[i]>=0 && max-prices[i]>profit)
{
profit=max-prices[i];
}
if(prices[i]>max)
max=prices[i];
}
return profit;
}
};
```

## Problem solution in C.

```int maxProfit(int* prices, int pricesSize){

int profit = 0;
int i;
int p = prices;
for(i=1; i < pricesSize; i++)
{
if((prices[i] - p) > profit)
profit = prices[i] - p;
p = prices[i] < p ? prices[i]:p;
}
return profit;
}
```