---
# System prepended metadata

title: Untitled

---

Given an array of stock prices for a day, where prices[i] is the price of the stock at time i, write a function that returns the maximum amount of money one could make in a day if he buys and sells at most once.


Input: [4,6,2,8,1,2]
Output: 6

Input: [6,5,2,10,11,1,1,1]
Output: 9

```javascript

// The trash work

// O(n^2) b/c you compare every combination.

const (prices) => {
    let buyPrice = 0;
    let sellPrice = 0;
    let maxProfit = 0;
    for(let i = 0; i < prices.length - 1; i++) {
        buyPrice = prices[i];
        for (let j = i + 1; j < prices.length; j++) {
            sellPrice = prices[j]
            newDiff = sellPrice - buyPrice
            if ((newDiff) > maxProfit) {
                maxProfit = newDiff;
            }
        }
    }
    
    return maxProfit;
}


/**
 *Given an array of stock prices for a day, where prices[i] is the price of the stock at time i, write a function that
 returns the maximum amount of money one could make in a day if he buys and sells at most once.
 @param prices is a non-empty array of at least two numbers
 */
 
// Example Input: [6,5,2,10,11,1,1,1]
// Output: 9

// O(n) b/c only looping once -- making comparisons as you go

const maxProfit = (prices) => {

    // Initialise vars
    let minPrice = prices[0]; // First item is max
    // let maxProf = -1; // Assumes prices of non-negative int
    let maxProf = prices[1] - prices[0];
    
    // For each price after initial,
    // If curr price lower than minPrice, set as new min
    for (let i = 1; i < prices.length - 1; i++) {
    
        if (prices[i] < minPrice) minPrice = prices[i]
        
        // Compare price w/ curr minPrice
        let diff = prices[i] - minPrice
        // if ((prices[i+1] - minPrice) > maxProf) maxProf = diff
        
        // If greater profit than curr maxProf, replace it
        if (diff > maxProf) maxProf = diff
    }

    // Return current maxProf
    return maxProf;
}



