Minimum common element in subarrays of all possible lengths | Function to find maximum distance between every two element ; Stores index of last occurence of each array element ; Initialize temp [ ] with - 1 ; Traverse the array ; If array element has not occurred previously ; Update index in temp ; Otherwise ; Compare temp [ a [ i ] ] with distance from its previous occurence and store the maximum ; Compare temp [ i ] with distance of its last occurence from the end of the array and store the maximum ; Function to find the minimum common element in subarrays of all possible lengths ; Function call to find a the maximum distance between every pair of repetition ; Initialize ans [ ] to - 1 ; Check if subarray of length temp [ i ] contains i as one of the common elements ; Find the minimum of all common elements ; Driver Code
function max_distance ( a , temp , n ) { var mp = new Map ( ) ; for ( var i = 1 ; i <= n ; i ++ ) { temp [ i ] = - 1 ; } for ( var i = 0 ; i < n ; i ++ ) { if ( ! mp . has ( a [ i ] ) ) temp [ a [ i ] ] = i + 1 ; else temp [ a [ i ] ] = Math . max ( temp [ a [ i ] ] , i - mp [ a [ i ] ] ) ; mp . set ( a [ i ] , i ) ; } for ( var i = 1 ; i <= n ; i ++ ) { if ( temp [ i ] != - 1 ) temp [ i ] = Math . max ( temp [ i ] , n - mp . get ( i ) ) ; } } function min_comm_ele ( a , ans , temp , n ) { max_distance ( a , temp , n ) ; for ( var i = 1 ; i <= n ; i ++ ) { ans [ i ] = - 1 ; } for ( var i = 1 ; i <= n ; i ++ ) { if ( ans [ temp [ i ] ] == - 1 ) ans [ temp [ i ] ] = i ; } for ( var i = 1 ; i <= n ; i ++ ) { if ( i > 1 && ans [ i - 1 ] != - 1 ) { if ( ans [ i ] == - 1 ) ans [ i ] = ans [ i - 1 ] ; else ans [ i ] = Math . min ( ans [ i ] , ans [ i - 1 ] ) ; } document . write ( ans [ i ] + " " ) ; } } var N = 6 ; var a = [ 1 , 3 , 4 , 5 , 6 , 7 ] ; var temp = new Array ( 100 ) , ans = Array ( 100 ) ; min_comm_ele ( a , ans , temp , N ) ;