Should be O(n).
For union :
Take all elements of the first list and simultaneously construct a hashtable for first list. This takes O(n) time.
For 2nd list, probe elements in the hash table first. If there is collision, don't put it in the union list, else put it. This takes O(n) time. Hence net time : O(n).
For intersection :
Construct hastable for first list. This will take O(n) time.
For 2nd list, probe elements in the hash table first. If collision happens, put it in intersection list. This also takes O(n) time. Hence net time : O(n)