Если вам гарантировано, что числа в массиве ограничены сверху и снизу, скажем, a и b, то вы можете выделить массив размера b - a и использовать его для отслеживания того, какие числа были замечены.
Т.е., вы должны перемещаться по входному массиву, брать каждое число и отмечать истину в вашем целевом массиве в этом месте. Вы увеличиваете счетчик различных чисел только тогда, когда встречаете число, положение которого в вашем массиве хранения равно false.