//2012-05-10 johnpfeiffer find k missing numbers from sequential list n
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class Main
{
public static void main(String[] args)
{
Main m = new Main();
int minimum = 0;
int maximum = 6;
int unsortedNumbers[] = { 1 , 3 , 0, 4, 6 } ;
HashMap <Integer,Integer> missing = new HashMap <Integer,Integer>();
for( int i = 0; i< unsortedNumbers.length; i++) // O(n)
{
missing.put( unsortedNumbers[i] , unsortedNumbers[i] );
// System.out.println( unsortedNumbers[i] ); //original ordering
}
m.display( missing );
for( int i = minimum; i<= maximum ; i++ ) // O(n + k)
{ if( !missing.containsValue( i ) ) // O(1)
{ System.out.println( "missing " + i );
}
}
}
private void display( HashMap <Integer,Integer> map )
{
Iterator it = map.entrySet().iterator();
while( it.hasNext() )
{
Map.Entry entry = (Map.Entry) it.next();
System.out.println( entry.getValue() );
}
}
/*
Set <Map.Entry <String , String> > set = parameterMap.entrySet();
Iterator <Map.Entry <String , String> > it = set.iterator();
while( it.hasNext() )
{
Entry <String, String> e = it.next();
String key = e.getKey();
String value = e.getValue();
System.out.println( value );
}
*/
}//end class