Largest Unique Number
Easy · Arrays & Hashing · Explanation and code example
Map
How it works
Using a regular hash map, we count frequencies in linear time. Then we scan all entries and track the maximum number with frequency 1. This avoids the overhead of maintaining sorted order.
Steps
- Build a frequency map counting occurrences of each number.
- Initialize the result to
-1. - Iterate through all entries in the map:
- If frequency equals
1and the number is larger than the current result, update the result.
- If frequency equals
- Return the result.
Complexity
- Time complexity:
O(n) - Space complexity:
O(n)
Where
nis the length of thenumsarray.
Things to watch for
Returning the First Unique Instead of the Largest
When iterating through numbers, it is tempting to return immediately upon finding a unique number. However, the problem asks for the largest unique number. Without sorting or tracking the maximum, returning early may yield a smaller unique value when a larger one exists.
Confusing Unique with Distinct
A number is unique if it appears exactly once in the array, not if it is different from its neighbors. Using logic that checks for distinct consecutive elements after sorting misses duplicates that are separated by other values in the original array.
Python code example
from typing import List
from collections import Counter
class Solution:
def largestUniqueNumber(self, nums: List[int]) -> int:
# Use Counter to count frequencies of numbers
frequency_map = Counter(nums)
# Find the largest number with frequency 1, or -1 if none found
return max(
(num for num, freq in frequency_map.items() if freq == 1),
default=-1,
)
C++ code example
class Solution {
public:
int largestUniqueNumber(vector<int>& nums) {
// Create an unordered_map to store the frequency of each number
unordered_map<int, int> frequencyMap;
// Populate the frequencyMap
for (int num : nums) {
frequencyMap[num]++;
}
// Initialize the result to -1 (default if no unique number is found)
int largestUnique = -1;
for (auto& pair : frequencyMap) {
// Check if the number appears only once and is larger than the
// current largestUnique
if (pair.second == 1 && pair.first > largestUnique) {
largestUnique = pair.first;
}
}
return largestUnique;
}
};
Source and license
Adapted from NeetCode’s source · MIT license. Node types are supplied by LeetCode where needed.