Smallest element present in every subarray of all possible lengths | Function to print the common elements for all subarray lengths ; Function to find and store the minimum element present in all subarrays of all lengths from 1 to n ; Skip lengths for which answer [ i ] is - 1 ; Initialize minimum as the first element where answer [ i ] is not - 1 ; Updating the answer array ; If answer [ i ] is - 1 , then minimum can be substituted in that place ; Find minimum answer ; Function to find the minimum number corresponding to every subarray of length K , for every K from 1 to N ; Stores the minimum common elements for all subarray lengths ; Find for every element , the minimum length such that the number is present in every subsequence of that particular length or more ; To store first occurence and gaps between occurences ; To cover the distance between last occurence and the end of the array ; To find the distance between any two occurences ; Update and store the answer ; Print the required answer ; Function to find the smallest element common in all subarrays for every possible subarray lengths ; Initializing indices array ; Store the numbers present in the array ; Push the index in the indices [ A [ i ] ] and also store the numbers in set to get the numbers present in input array ; Function call to calculate length of subarray for which a number is present in every subarray of that length ; Given array ; Size of array ; Function Call
function printAnswer ( answer , N ) { for ( let i = 1 ; i <= N ; i ++ ) { document . write ( answer [ i ] + " " ) ; } } function updateAnswerArray ( answer , N ) { let i = 0 ; while ( answer [ i ] == - 1 ) i ++ ; let minimum = answer [ i ] ; while ( i <= N ) { if ( answer [ i ] == - 1 ) answer [ i ] = minimum ; else answer [ i ] = Math . min ( minimum , answer [ i ] ) ; minimum = Math . min ( minimum , answer [ i ] ) ; i ++ ; } } function lengthOfSubarray ( indices , st , N ) { let answer = new Array ( N + 1 ) . fill ( - 1 ) ; for ( let itr of st ) { let start = - 1 ; let gap = - 1 ; indices [ itr ] . push ( N ) ; for ( let i = 0 ; i < indices [ itr ] . length ; i ++ ) { gap = Math . max ( gap , indices [ itr ] [ i ] - start ) ; start = indices [ itr ] [ i ] ; } if ( answer [ gap ] == - 1 ) answer [ gap ] = itr ; } updateAnswerArray ( answer , N ) ; printAnswer ( answer , N ) ; } function smallestPresentNumber ( arr , N ) { let indices = new Array ( N + 1 ) . fill ( 0 ) . map ( ( ) => [ ] ) ; let elements = new Set ( ) ; for ( let i = 0 ; i < N ; i ++ ) { indices [ arr [ i ] ] . push ( i ) ; elements . add ( arr [ i ] ) ; } lengthOfSubarray ( indices , elements , N ) ; } let arr = [ 2 , 3 , 5 , 3 , 2 , 3 , 1 , 3 , 2 , 7 ] ; let N = arr . length ; smallestPresentNumber ( arr , N ) ;