int maxProfit(vector<int>& prices) {
int best = 0;
int n = prices.size();
for (int buy = 0; buy < n; buy++) {
for (int sell = buy + 1; sell < n; sell++) {
best = max(best, prices[sell] - prices[buy]);
}
}
return best;
}
public int maxProfit(int[] prices) {
int best = 0;
int n = prices.length;
for (int buy = 0; buy < n; buy++) {
for (int sell = buy + 1; sell < n; sell++) {
best = Math.max(best, prices[sell] - prices[buy]);
}
}
return best;
}
def max_profit(prices: list[int]) -> int:
best = 0
n = len(prices)
for buy in range(n):
for sell in range(buy + 1, n):
best = max(best, prices[sell] - prices[buy])
return best
function maxProfit(prices: number[]): number {
let best = 0;
for (let buy = 0; buy < prices.length; buy++) {
for (let sell = buy + 1; sell < prices.length; sell++) {
best = Math.max(best, prices[sell] - prices[buy]);
}
}
return best;
}
int maxProfit(vector<int>& prices) {
int n = prices.size();
vector<int> maxAfter(n, 0);
for (int i = n - 2; i >= 0; i--) {
maxAfter[i] = max(maxAfter[i + 1], prices[i + 1]);
}
int best = 0;
for (int i = 0; i < n; i++) {
best = max(best, maxAfter[i] - prices[i]);
}
return best;
}
public int maxProfit(int[] prices) {
int n = prices.length;
int[] maxAfter = new int[n];
for (int i = n - 2; i >= 0; i--) {
maxAfter[i] = Math.max(maxAfter[i + 1], prices[i + 1]);
}
int best = 0;
for (int i = 0; i < n; i++) {
best = Math.max(best, maxAfter[i] - prices[i]);
}
return best;
}
def max_profit(prices: list[int]) -> int:
n = len(prices)
max_after = [0] * n
for i in range(n - 2, -1, -1):
max_after[i] = max(max_after[i + 1], prices[i + 1])
best = 0
for i in range(n):
best = max(best, max_after[i] - prices[i])
return best
function maxProfit(prices: number[]): number {
const n = prices.length;
const maxAfter = new Array<number>(n).fill(0);
for (let i = n - 2; i >= 0; i--) {
maxAfter[i] = Math.max(maxAfter[i + 1], prices[i + 1]);
}
let best = 0;
for (let i = 0; i < n; i++) {
best = Math.max(best, maxAfter[i] - prices[i]);
}
return best;
}
int maxProfit(vector<int>& prices) {
int minPrice = INT_MAX;
int best = 0;
for (int price : prices) {
if (price < minPrice) minPrice = price;
else best = max(best, price - minPrice);
}
return best;
}
public int maxProfit(int[] prices) {
int minPrice = Integer.MAX_VALUE;
int best = 0;
for (int price : prices) {
if (price < minPrice) minPrice = price;
else best = Math.max(best, price - minPrice);
}
return best;
}
def max_profit(prices: list[int]) -> int:
min_price = float('inf')
best = 0
for price in prices:
if price < min_price: min_price = price
else: best = max(best, price - min_price)
return best
function maxProfit(prices: number[]): number {
let minPrice = Infinity;
let best = 0;
for (const price of prices) {
if (price < minPrice) minPrice = price;
else best = Math.max(best, price - minPrice);
}
return best;
}
int maxProfit(const vector<int>& prices) {
int n = prices.size();
if (n < 2) return 0;
long long best = 0;
long long run = 0;
for (int i = 1; i < n; i++) {
run = max(0LL, run + ((long long)prices[i] - prices[i - 1]));
if (run > best) best = run;
}
return (int)best;
}
public int maxProfit(int[] prices) {
int n = prices.length;
if (n < 2) return 0;
long best = 0;
long run = 0;
for (int i = 1; i < n; i++) {
run = Math.max(0L, run + ((long) prices[i] - prices[i - 1]));
if (run > best) best = run;
}
return (int) best;
}
def max_profit(prices: Sequence[int]) -> int:
n = len(prices)
if n < 2: return 0
best = 0
run = 0
for i in range(1, n):
run = max(0, run + (prices[i] - prices[i - 1]))
if run > best: best = run
return best
function maxProfit(prices: ArrayLike<number>): number {
const n = prices.length;
if (n < 2) return 0;
let best = 0;
let run = 0;
for (let i = 1; i < n; i++) {
run = Math.max(0, run + (prices[i] - prices[i - 1]));
if (run > best) best = run;
}
return best;
}