java - 从下面程序中的不同列表中删除公共元素的算法
问题描述
这是评估给定整数数组因子的代码。问题是我需要从作为输出收到的列表中找到 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(最小公倍数)。
解决方案
建议从列表中删除重复元素
使用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有什么区别?
推荐阅读
- c++ - OpenCV FileStorage - Error: Parsing error (icvYMLParseValue) Missing , between the elements
- regex - VBA Getting the correct regex syntax
- javascript - How to create Auxiliary (Higher Order Component) in preact?
- html - How to change Multilevel Menu dropdown icon when input type is checked?
- postgresql - Looking for monitoring tool for JetBrains DataGrip
- python - finding from import statements in python
- laravel - How to cast time in Laravel?
- csv - 按照以下逻辑加载数据
- nlp - LUIS - Can we use phrases list for new values in the entity type List
- azure - 使用 Azure 功能进行 Google 身份验证