Skip to content

Instantly share code, notes, and snippets.

@devrkd
Created June 17, 2021 16:49
Show Gist options
  • Save devrkd/ccdc25dc4a27ca38e47ebd79dd31e6e9 to your computer and use it in GitHub Desktop.
Save devrkd/ccdc25dc4a27ca38e47ebd79dd31e6e9 to your computer and use it in GitHub Desktop.
How to maximize stock profits, dynamic programming question
/**
* Problem Statement:
* Say you have an array for which the ith element is the price of a given stock on day i.
* If you were only permitted to complete at most one transaction (i.e., buy one and sell one share of the stock), design an algorithm to find the maximum profit.
* Note that you cannot sell a stock before you buy one.
* Example 1:
* Input: [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. Not 7–1 = 6, as selling price needs to be larger than buying price.
* Example 2:
* Input: [7,6,4,3,1]
* Output: 0
* Explanation: In this case, no transaction is done, i.e. max profit = 0.
*
* Solution in O(n) time complexity
*/
function findProfit(stock) {
let result = 0, profit = 0;
for(let i=0; i< stock.length ;i++) {
if(result === 0) {
result = Math.min(stock[i], stock[i+1] )
} else {
result = Math.min(result, stock[i], stock[i+1] )
}
let p = stock[i+1] - result;
if(p > profit) {
profit = p;
}
}
return profit;
}
console.log(findProfit([5,6,7,10,8,5]));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment