JD

Diff Viewer

Compare original code against optimized versions

11 added
9 removed
Original
// Slow: nested loop to find duplicates
function findDuplicates(arr) {
  var duplicates = [];
  for (var i = 0; i < arr.length; i++) {
    for (var j = i + 1; j < arr.length; j++) {
      if (arr[i] == arr[j]) {
        duplicates.push(arr[i]);
      }
    }
  }
  return duplicates;
}
Optimized
// Fast: Set-based O(n) approach
function findDuplicates(arr) {
  const seen = new Set();
  const duplicates = new Set();

  for (const item of arr) {
    if (seen.has(item)) {
      duplicates.add(item);
    }
    seen.add(item);
  }

  return [...duplicates];
}
Unified Diff
1
-
// Slow: nested loop to find duplicates
1
+
// Fast: Set-based O(n) approach
2
2
function findDuplicates(arr) {
3
-
  var duplicates = [];
4
-
  for (var i = 0; i < arr.length; i++) {
5
-
    for (var j = i + 1; j < arr.length; j++) {
6
-
      if (arr[i] == arr[j]) {
7
-
        duplicates.push(arr[i]);
3
+
  const seen = new Set();
4
+
  const duplicates = new Set();
8
-
      }
5
+
6
+
  for (const item of arr) {
7
+
    if (seen.has(item)) {
8
+
      duplicates.add(item);
9
9
    }
10
+
    seen.add(item);
10
11
  }
11
-
  return duplicates;
12
-
}
12
+
13
+
  return [...duplicates];
14
+
}