Skip to content

Files

Latest commit

bd70e45 · Oct 15, 2024

History

History
70 lines (62 loc) · 2.13 KB

Question_1101.md

File metadata and controls

70 lines (62 loc) · 2.13 KB

LeetCode Records - Question 1101 The Earliest Moment When Everyone Become Friends

Attempt 1: Use an ArrayList to store the people relationships

class Solution {
    public int earliestAcq(int[][] logs, int n) {
        List<Set<Integer>> list = new ArrayList<>();
        boolean[] checked = new boolean[n];

        Arrays.sort(logs, (l1, l2) -> l1[0] - l2[0]);

        for (int[] log : logs) {
            if (!checked[log[1]] && !checked[log[2]]) {
                Set<Integer> set = new HashSet<>();
                set.add(log[1]);
                set.add(log[2]);
                list.add(set);
                checked[log[1]] = true;
                checked[log[2]] = true;
            } else if (!checked[log[1]]) {
                for (Set<Integer> set : list) {
                    if (set.contains(log[2])) {
                        set.add(log[1]);
                        checked[log[1]] = true;
                        break;
                    }
                }
            } else if (!checked[log[2]]) {
                for (Set<Integer> set : list) {
                    if (set.contains(log[1])) {
                        set.add(log[2]);
                        checked[log[2]] = true;
                        break;
                    }
                }
            } else {
                Set<Integer> set1 = null;
                Set<Integer> set2 = null;
                for (Set<Integer> set : list) {
                    if (set.contains(log[1])) {
                        set1 = set;
                    }
                    if (set.contains(log[2])) {
                        set2 = set;
                    }

                    if (set1 != null && set2 != null) {
                        break;
                    }
                }

                if (set1 != set2) {
                    set1.addAll(set2);
                    list.remove(set2);
                }
            }

            if (list.size() == 1 && list.get(0).size() == n) {
                return log[0];
            }
        }

        return -1;
    }
}
  • Runtime: 8 ms (Beats: 18.20%)
  • Memory: 44.33 MB (Beats: 65.72%)