878926. Table Difference

Basic

Table Difference

Summary

Given two tables with identical column names, find the differences between them. The problem can be approached as a comparison problem, where you need to identify the rows that exist in one table but not the other.

Detailed Explanation

The problem requires you to compare two tables and find the rows that are present in one table but not the other. A straightforward approach would be to iterate through each row of both tables and check if a row exists in only one of them. If a row is found in one table but not the other, it's considered different.

Here's a step-by-step breakdown:

  1. Initialize two sets: table1 and table2. Each set will store the rows from their respective tables.
  2. Iterate through each row in both tables. For each row:
    • Check if the row exists in only one of the tables (i.e., it's present in either table1 or table2, but not both). If so, consider this row as different between the two tables.
  3. Return a set of rows that are considered different.

Time Complexity: The time complexity is O(n), where n is the total number of rows in both tables. This is because we're iterating through each row once to find differences.

Space Complexity: The space complexity is also O(n) as we're storing all rows from both tables in sets.

Optimized Solutions

Java

java
import java.util.*;

public class TableDifference {
    public static Set<String> getDifferences(HashSet<String>[] table1, HashSet<String>[] table2) {
        Set<String> differences = new HashSet<>();

        for (int i = 0; i < table1.length; i++) {
            differences.addAll(table1[i].difference(table2[i]));
        }

        return differences;
    }
}

Python

python
def get_differences(table1, table2):
    differences = set()

    for row in zip(*table1):
        if row not in zip(*table2):
            differences.add(','.join(row))

    return differences

C++

cpp
#include <iostream>
#include <set>
#include <vector>

std::set<std::string> getDifferences(const std::vector<std::set<std::string>>& table1, const std::vector<std::set<std::string>>& table2) {
    std::set<std::string> differences;

    for (int i = 0; i < table1.size(); i++) {
        differences.insert(table1[i].difference(table2[i]).begin(), table1[i].difference(table2[i]).end());
    }

    return differences;
}

JavaScript

javascript
function getDifferences(table1, table2) {
    let differences = new Set();

    for (let i = 0; i < table1.length; i++) {
        for (let row of table1[i]) {
            if (!table2[i].has(row)) {
                differences.add(row);
            }
        }
    }

    return differences;
}

In each language, the solution iterates through each row in both tables and checks if a row exists in only one of them. The different rows are then added to a set, which is returned as the result.

View on GeeksforGeeks

Not available

DevExCode

Master coding interviews with Leetcode, system design, TechBit, QuickLearn, DevTips, Tech Battles, and career services.

© 2026 DevExCode. All rights reserved.