Middle — Senior
Περιγράψτε την εργασία ομαδοποίησης γειτονικών αριθμών σε εύρη.
sobes.tech AI
Απάντηση από AI
Η εργασία συγχώνευσης διαδοχικών αριθμών σε εύρη είναι η δημιουργία του ελάχιστου αριθμού συνεχόμενων διαστημάτων (εύρη) που καλύπτουν όλους αυτούς τους αριθμούς χωρίς κενά.
Για παράδειγμα, υπάρχουν αριθμοί: [1, 2, 3, 5, 6, 8]
Το αποτέλεσμα της συγχώνευσης:
- [1-3]
- [5-6]
- [8]
Αυτό είναι χρήσιμο για τη βελτιστοποίηση της αποθήκευσης ή της εμφάνισης δεδομένων, όταν οι διαδοχικοί αριθμοί μπορούν να αναπαρασταθούν συμπαγώς ως εύρος.
Βασικά βήματα της λύσης:
- Ταξινόμηση του πίνακα αριθμών.
- Επαναληπτική επεξεργασία της ταξινομημένης λίστας, σχηματίζοντας το τρέχον εύρος.
- Αν το επόμενο στοιχείο είναι διαδοχικό (τρέχον + 1), επέκταση του εύρους.
- Αν όχι, αποθήκευση του τρέχοντος εύρους και έναρξη νέου.
Η πολυπλοκότητα του αλγορίθμου είναι — O(n log n) λόγω ταξινόμησης, όπου n είναι ο αριθμός των αριθμών.
Παράδειγμα σε Python:
def collapse_ranges(nums):
if not nums:
return []
nums = sorted(set(nums))
ranges = []
start = prev = nums[0]
for num in nums[1:]:
if num == prev + 1:
prev = num
else:
ranges.append((start, prev))
start = prev = num
ranges.append((start, prev))
return ranges
# Παράδειγμα
print(collapse_ranges([1,2,3,5,6,8])) # [(1,3), (5,6), (8,8)]