组合n个列表中的3个列表

dced5bon  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(181)

给定一个数组列表,数组列表的大小大于3,

ArrayList<ArrayList<Integer>> lists = new ArrayLists<ArrayList<Integer>>();

我想取3个唯一的子列表,找到它们的交集,然后对所有可能的组合重复这个过程。下面是伪代码

public void generateIntersections(ArrayLists<ArrayList<Integer>> lists) {
    if (lists.size() > 3) {
        int n = lists.size();
        //number of combinations theoretically, `!` is wrong I know
        int numberOfCombinations = n! / (3!(n - 3)!);
        while (numberOfCombinations) {
            // unique items
            ArrayList<Integer> list 1 = lists.get(?);
            ArrayList<Integer> list 2 = lists.get(?);
            ArrayList<Integer> list 3 = lists.get(?);

            Set<Integer> = intersection(list1, list2, list3);
        }
    }
}

我对这个问题感到困惑,因为我不知道如何在迭代时正确地跟踪三个计数器。在这种特殊情况下,我进一步被正确地实现组合的概念而不是排列的概念所阻碍。
我尝试过很多东西,但在每种情况下,我的代码很快就会变成废话。我想我缺少一些特别的技巧。可能是涉及哈希集的东西?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题