Sobes.tech
Middle — Senior

Περιγράψτε την εργασία ομαδοποίησης γειτονικών αριθμών σε εύρη.

sobes.tech AI

Απάντηση από AI

Η εργασία συγχώνευσης διαδοχικών αριθμών σε εύρη είναι η δημιουργία του ελάχιστου αριθμού συνεχόμενων διαστημάτων (εύρη) που καλύπτουν όλους αυτούς τους αριθμούς χωρίς κενά.

Για παράδειγμα, υπάρχουν αριθμοί: [1, 2, 3, 5, 6, 8]

Το αποτέλεσμα της συγχώνευσης:

  • [1-3]
  • [5-6]
  • [8]

Αυτό είναι χρήσιμο για τη βελτιστοποίηση της αποθήκευσης ή της εμφάνισης δεδομένων, όταν οι διαδοχικοί αριθμοί μπορούν να αναπαρασταθούν συμπαγώς ως εύρος.

Βασικά βήματα της λύσης:

  1. Ταξινόμηση του πίνακα αριθμών.
  2. Επαναληπτική επεξεργασία της ταξινομημένης λίστας, σχηματίζοντας το τρέχον εύρος.
  3. Αν το επόμενο στοιχείο είναι διαδοχικό (τρέχον + 1), επέκταση του εύρους.
  4. Αν όχι, αποθήκευση του τρέχοντος εύρους και έναρξη νέου.

Η πολυπλοκότητα του αλγορίθμου είναι — 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)]