Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
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.
Advertisements
