Largest Unique Number in Python

In this problem, we need to find the largest number that appears exactly once in a list. If no such number exists, we return -1.

Problem Understanding

Given a list like [5,2,3,6,5,2,9,6,3], we need to ?

  • Count the frequency of each number
  • Find numbers that appear exactly once
  • Return the largest among those unique numbers

Method 1: Using Dictionary for Counting

We can use a dictionary to count occurrences and then find the largest unique number ?

def largest_unique_number(numbers):
    count = {}
    
    # Count frequency of each number
    for num in numbers:
        if num not in count:
            count[num] = 1
        else:
            count[num] += 1
    
    # Find largest number with frequency 1
    largest = -1
    for num, freq in count.items():
        if freq == 1:
            largest = max(num, largest)
    
    return largest

# Test the function
numbers = [5, 2, 3, 6, 5, 2, 9, 6, 3]
result = largest_unique_number(numbers)
print(f"Largest unique number: {result}")
Largest unique number: 9

Method 2: Using Counter from Collections

Python's Counter provides a more concise way to count frequencies ?

from collections import Counter

def largest_unique_counter(numbers):
    count = Counter(numbers)
    unique_numbers = [num for num, freq in count.items() if freq == 1]
    
    return max(unique_numbers) if unique_numbers else -1

# Test with different examples
test_cases = [
    [5, 2, 3, 6, 5, 2, 9, 6, 3],
    [1, 1, 2, 2, 3, 3],
    [7, 4, 9, 4, 7]
]

for numbers in test_cases:
    result = largest_unique_counter(numbers)
    print(f"Input: {numbers}")
    print(f"Largest unique: {result}")
    print()
Input: [5, 2, 3, 6, 5, 2, 9, 6, 3]
Largest unique: 9

Input: [1, 1, 2, 2, 3, 3]
Largest unique: -1

Input: [7, 4, 9, 4, 7]
Largest unique: 9

Method 3: One-Pass Solution

For better efficiency, we can track the largest unique number during counting ?

def largest_unique_optimized(numbers):
    count = {}
    
    # First pass: count frequencies
    for num in numbers:
        count[num] = count.get(num, 0) + 1
    
    # Second pass: find largest unique
    largest = -1
    for num in numbers:
        if count[num] == 1:
            largest = max(largest, num)
    
    return largest

# Test the optimized solution
numbers = [10, 5, 8, 5, 10, 15, 8, 20]
result = largest_unique_optimized(numbers)
print(f"Numbers: {numbers}")
print(f"Largest unique: {result}")
Numbers: [10, 5, 8, 5, 10, 15, 8, 20]
Largest unique: 20

Comparison of Methods

Method Time Complexity Space Complexity Readability
Dictionary O(n) O(n) Good
Counter O(n) O(n) Best
Optimized O(n) O(n) Good

Conclusion

Use Counter for the most readable solution. All methods have O(n) time complexity, making them efficient for finding the largest unique number in any list.

Updated on: 2026-03-25T08:08:32+05:30

631 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements