Sobes.tech
Middle

Άσκηση JavaScript: γράψτε μια συνάρτηση που δέχεται δύο πίνακες και επιστρέφει έναν πίνακα με τα στοιχεία που υπάρχουν μόνο σε έναν από τους δύο πίνακες (διακριτική διαφορά). Αξιολογήστε τη δυσκολία του αλγορίθμου.

sobes.tech AI

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

Ακολουθεί ένα παράδειγμα μιας συνάρτησης σε JavaScript που επιστρέφει τη συμμετρική διαφορά δύο πινάκων:

function symmetricDifference(arr1, arr2) {
  const set1 = new Set(arr1);
  const set2 = new Set(arr2);
  const result = [];

  for (const item of set1) {
    if (!set2.has(item)) {
      result.push(item);
    }
  }

  for (const item of set2) {
    if (!set1.has(item)) {
      result.push(item);
    }
  }

  return result;
}

Η πολυπλοκότητα του αλγορίθμου είναι — O(n + m), όπου n και m είναι τα μήκη των εισερχόμενων πινάκων. Αυτό οφείλεται στο γεγονός ότι οι λειτουργίες προσθήκης και ελέγχου στο Set εκτελούνται σε amortized χρόνο O(1), και διατρέχουμε κάθε στοιχείο και των δύο πινάκων μία φορά.