If you use a data structure that doesn't allow duplicates, then you can do it in O(1) time and O(n) space.
But for a given array, you can put each element in a hashtable (that way iterating the array once), and getting your O(n) time. Along the way looking for collisions, O(1) lookup (average) for hash tables. Although, you will be using more space in the process.
edit: Worst case O(n)? Then you don't want this, use a bit-set as the data structure, but the principle is the same. Proof? I think the people here have given you enough information for you to explore what a proof of complexity is and a foundation of the data structures to look at first. I see no reason why you can't solve the rest of this on your own. Ask follow-ups if necessary, but indicate you understand this, and you made some god damn effort. I do not wish you a Merry Xmas or Happy Holiday, good day to you sir.
edit: I SAID GOOD DAY!