121. Best Time to Buy and Sell Stock

Blog

You are given an array prices where prices[i] is the price of a given stock on the 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.

Example: 1

Input: prices = [7,1,5,3,6,4]

Output: 5

Example: 2

Input: [7,6,4,3,1]

Output: 0

Constraints:
  • 1 <= prices.length <= 10 ^ 5
  • 0 <= prices[i] <= 10 ^ 4
Important observation:
  • Let's say the array is of size N with elements from [1, N].
  • Let's say we have bought a stock at index i, then to maximize our profit, we will sell it at the point from [i + 1, N], where the value is maximum.
  • So by doing it for every individual i, we will have our answer.
Full Code (Java): class Solution { public int maxProfit(int[] prices) { int n = prices.length; // creating an array to store the maximum value // from [i, n - 1] int[] max = new int[n]; max[n - 1] = prices[n - 1]; // storing max value from index [i, n - 1] // 0 - based indexing for(int i = n - 2; i >= 0; i--) { max[i] = Math.max(prices[i], max[i + 1]); } // computing our final answer int ans = 0; for(int i = 0; i < n - 1; i++) { ans = Math.max(ans, max[i + 1] - prices[i]); } return ans; } }

Comments

Popular posts from this blog

123. Best Time to Buy and Sell Stock III

1799. Maximize Score After N Operations (Leetcode)

1819. Number of Different Subsequences GCDs (Leetcode)