首页 > 解决方案 > 从下面程序中的不同列表中删除公共元素的算法

问题描述

这是评估给定整数数组因子的代码。问题是我需要从作为输出收到的列表中找到 LCM。建议从列表中删除重复元素

主要方法

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int [] ar = {6,12,36};
        for (int a:
             ar) {
            System.out.println(getFactor(a));
        }

getFactor(long) 返回因子列表

private static List<Integer> getFactor(long n) {
        List<Integer> l = new ArrayList<>();
        for (int i=2;n!=1;i++)
        {
            if(n%i==0)
            {
                l.add(i);
                n=n/i;
                i=1;
            }
        }
        return l;
    }

/*Input
6,12,36
Output
[2, 3]
[2, 2, 3]
[2, 2, 3, 3]*/

问题 从其他列表中删除 [2,3] 重复项以获得 LCM(最小公倍数)。

标签: javaalgorithmlistarraylistcollections

解决方案


建议从列表中删除重复元素

使用Set而不是List

private static Set<Integer> getFactor(long n) {
    Set<Integer> l = new HashSet<>();
    for (int i = 2; n != 1; i++) {
        if (n % i == 0) {
            l.add(i);
            n = n / i;
            i = 1;
        }
    }
    return l;
}

输出:

[2, 3]
[2, 3]
[2, 3]

推荐阅读:Set和List有什么区别?


推荐阅读