The stock span problem involves calculating the span of a stock's price for N days based on a series of daily price quotes. The span is the maximum number of consecutive days for which the price of the stock was less than or equal to its price on the current day. This problem can be efficiently solved using a stack to maintain the prices in monotonically decreasing order, and iterating through the price array to find the price just greater than the current price on its left side to calculate each span.
The stock span problem involves calculating the span of a stock's price for N days based on a series of daily price quotes. The span is the maximum number of consecutive days for which the price of the stock was less than or equal to its price on the current day. This problem can be efficiently solved using a stack to maintain the prices in monotonically decreasing order, and iterating through the price array to find the price just greater than the current price on its left side to calculate each span.
The stock span problem involves calculating the span of a stock's price for N days based on a series of daily price quotes. The span is the maximum number of consecutive days for which the price of the stock was less than or equal to its price on the current day. This problem can be efficiently solved using a stack to maintain the prices in monotonically decreasing order, and iterating through the price array to find the price just greater than the current price on its left side to calculate each span.
•The stock span problem is a financial problem where we have a series of N
daily price quotes for a stock and we need to calculate the span of the stock's price for all N days. •The stock span problem can be solved efficiently using stack data structure. •The idea is to use a stack to maintain the prices in monotonically decreasing order. We will iterate over the price array and for each price we will find the price just greater than the current price, lying on the left side of the array. Stock Span problem Example: Input: size = 4 arr[]={97,64,32,11,22,56}
Step 1: Traversing the given input span for 97 will be 1
Step 2: 64 is smaller than 97, so span will be 1 Step 3: 32 is smaller than 64 & 97, so span will be 1 Step 4: 11 is smaller than 97,64 & 32, so span will be 1 Step 5: 22 is greater than 11, so the span is 2 Step 6: 56 is greater than 32,11,22, so the span is 4 1 import java.util.*; 2 public class Main { 3 4 static void calculate(int arr[], int n, int S[]) 5 { 6 7 Stack<Integer> st = new Stack<>(); 8 st.push(0); 9 S[0] = 1; 10 11 for (int i = 1; i < n; i++) 12 { 13 14 while (!st.isEmpty() && arr[st.peek()] <= arr[i]) 15 st.pop(); 16 S[i] = (st.isEmpty()) ? (i + 1) : (i - st.peek()); 17 18 st.push(i); 19 } 20 21 } 22 1 static void printArray(int arr[]) 2 { 3 System.out.print(Arrays.toString(arr)); 4 5 } 6 public static void main(String[] args) 7 { 8 9 Scanner sc=new Scanner(System.in); 10 int n=sc.nextInt(); 11 int arr[]=new int [n]; 12 for(int i=0;i<n;i++) 13 14 { 15 arr[i]=sc.nextInt(); 16 } 17 18 int S[] = new int[n]; 19 calculate(arr, n, S); 20 printArray(S); 21 22 } THANK YOU