#codingexercise
From a stream of numbers, get N minimum assuming no duplicates
SortedList<int> GetMinStream(BinaryReader reader, int N)
{
var ret = new SortedList<int, int>();
ret.Capacity = N + 1;
while (reader.PeekChar() != -1)
{
int val = reader.ReadInt32();
int count = ret.count;
if (count > 0 ){
int min = ret.GetByIndex(count -1);
if (val < min){
ret.Add(val, val)
ret.RemoveAt(count - 1);
}
}else{
ret.Add(val, val);
}
}
return ret;
}
For medians, we can maintain heap.
From a stream of numbers, get N minimum assuming no duplicates
SortedList<int> GetMinStream(BinaryReader reader, int N)
{
var ret = new SortedList<int, int>();
ret.Capacity = N + 1;
while (reader.PeekChar() != -1)
{
int val = reader.ReadInt32();
int count = ret.count;
if (count > 0 ){
int min = ret.GetByIndex(count -1);
if (val < min){
ret.Add(val, val)
ret.RemoveAt(count - 1);
}
}else{
ret.Add(val, val);
}
}
return ret;
}
For medians, we can maintain heap.
No comments:
Post a Comment