Practice/Uber/Leetcode 1429. First Unique Number
CodingMust
You need to implement a data structure that tracks numbers in a stream and efficiently identifies the first number that appears exactly once. The structure is initialized with a list of numbers and supports two operations:
The key challenge is to maintain both the frequency of each number and the order in which they appear, while keeping the showFirstUnique() operation efficient.
FirstUnique class with a constructor that accepts an initial array of integersshowFirstUnique() to return the first unique number or -1 if none existsadd(value) to add a number to the streamshowFirstUnique and add combinedshowFirstUnique should ideally run in O(1) timeadd should run in O(1) time on averageExample 1:
FirstUnique firstUnique = new FirstUnique([2, 3, 5]); firstUnique.showFirstUnique(); // returns 2 firstUnique.add(5); // the queue is now [2, 3, 5, 5] firstUnique.showFirstUnique(); // returns 2 firstUnique.add(2); // the queue is now [2, 3, 5, 5, 2] firstUnique.showFirstUnique(); // returns 3 firstUnique.add(3); // the queue is now [2, 3, 5, 5, 2, 3] firstUnique.showFirstUnique(); // returns -1
Example 2:
FirstUnique firstUnique = new FirstUnique([10, 20, 30]); firstUnique.showFirstUnique(); // returns 10 firstUnique.add(10); // the queue is now [10, 20, 30, 10] firstUnique.showFirstUnique(); // returns 20 firstUnique.add(20); // the queue is now [10, 20, 30, 10, 20] firstUnique.showFirstUnique(); // returns 30
Example 3:
FirstUnique firstUnique = new FirstUnique([5, 5, 5]); firstUnique.showFirstUnique(); // returns -1 (no unique numbers) firstUnique.add(8); // the queue is now [5, 5, 5, 8] firstUnique.showFirstUnique(); // returns 8