Given an array of unknown size and containing only integers between 0 to 30 (inclusive), write an algorithm to find which numbers are duplicated, if any.
var arr = [ 8, 5, 3, 7, 5, 0, 2, 2, 7, 7, 4, 5, 7, 3, 1 ]; // input array function find_duplicates_array( input_arr ) { var i, ind, arr_len, duplicates_arr = [], counts_arr = []; arr_len = input_arr.length; for ( i = 0; i < arr_len; i++ ) { // run thru array ind = input_arr[i]; if( counts_arr[ind] >= 1 ) { // indexing and counting found elements counts_arr[ind] = counts_arr[ind] + 1; } else { counts_arr[ind] = 1; } } for ( ind in counts_arr ) { if ( counts_arr[ind] > 1 ) { // duplicates - it's the elements found more than once duplicates_arr.push(ind); } } //alert( ' input array = [ ' + input_arr + ' ]; \n duplicates array = [ ' + duplicates_arr + ' ];' ); // alert for demonstation document.getElementById('log').innerHTML = ' input array = [ ' + input_arr + ' ]; \n duplicates array = [ ' + duplicates_arr + ' ];'; // return duplicates_arr; } find_duplicates_array( arr );