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[0] if len(prices) else -1, 0 for i in range(1, len(prices)): profit = max(profit, prices[i]-buy) buy = min(buy, prices[i]) 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[0]; 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[0]; for(i=1; i < pricesSize; i++) { if((prices[i] - p) > profit) profit = prices[i] - p; p = prices[i] < p ? prices[i]:p; } return profit; }

## 0 Comments