Middle
Περιγράψτε την προσέγγιση αποθήκευσης της θέσης της τελευταίας μονάδας κατά την επίλυση του προβλήματος της μέγιστης απόστασης
sobes.tech AI
Απάντηση από AI
Η προσέγγιση διατήρησης της θέσης της τελευταίας μονάδας κατά την επίλυση του προβλήματος της μέγιστης απόστασης (π.χ., η μέγιστη απόσταση μεταξύ μονάδων σε έναν πίνακα) είναι η εξής:
- Διατρέχουμε τον πίνακα, παρακολουθώντας το δείκτη της τελευταίας συναντημένης μονάδας.
- Όταν συναντάμε μια νέα μονάδα, υπολογίζουμε την απόσταση από την τελευταία αποθηκευμένη θέση αυτής της μονάδας.
- Ενημερώνουμε τη μέγιστη απόσταση αν η τρέχουσα είναι μεγαλύτερη.
- Ενημερώνουμε τη θέση της τελευταίας μονάδας στον τρέχοντα δείκτη.
Αυτό επιτρέπει την εύρεση της μέγιστης απόστασης μεταξύ μονάδων σε μία μόνο διέλευση, χωρίς να χρειάζεται να αποθηκεύσουμε όλες τις θέσεις.
Παράδειγμα σε Go:
func maxDistance(arr []int) int {
lastPos := -1
maxDist := 0
for i, val := range arr {
if val == 1 {
if lastPos != -1 {
dist := i - lastPos
if dist > maxDist {
maxDist = dist
}
}
lastPos = i
}
}
return maxDist
}