如何检查数组中之前是不是出现过元素[重复]
Posted
技术标签:
【中文标题】如何检查数组中之前是不是出现过元素[重复]【英文标题】:How to check if an element has occured before in the array [duplicate]如何检查数组中之前是否出现过元素[重复] 【发布时间】:2015-12-16 00:21:56 【问题描述】:例如,以下问题说明:
编写一个方法,将两个整数数组作为参数并打印它们的所有公共元素。
我的尝试:
public static void commonElements(int[] A, int[] B)
for(int i = 0; i < A.length; i++)
for(int j = 0; j < B.length; j++)
if(A[i] == B[j])
System.out.print(A[i] + " ");
现在,问题是该代码仅在每个数组中的元素仅出现一次时才有效。但是例如,如果数组 A 中有两个 4,数组 B 中有四个 4,则输出将是 8 个 4,这是错误的!
那么,我如何检查数组中的某个元素是否已经出现,以便代码不会考虑它。
【问题讨论】:
如果是found
,那么break
你需要的代码可以在Jacorb Effect's answer in this question on Stack Overflow找到。
【参考方案1】:
public static void commonElements(int[]A, int []B)
int count = 0;
for(int i = 0; i < A.length; i++)
for(int j = 0; j < B.length; j++)
if(A[i] == B[j])
count++;
break;
System.out.println(count);
试试这个。通过添加 break 你强制它退出循环。
【讨论】:
【参考方案2】:您可以将找到的内容存储在集合中。集合不允许重复。
public static void commonElements(int[] a, int[] b)
Set<Integer> duplicates = new LinkedHashSet<Integer> duplicates;
for(int i = 0; i < a.length; i++)
for(int j = 0; j < b.length; j++)
if(a[i] == b[j])
duplicates.add(a[i]);
System.out.println(String.join(" ", duplicates));
注意:按照约定,Java 中的变量名应为小写。
【讨论】:
以上是关于如何检查数组中之前是不是出现过元素[重复]的主要内容,如果未能解决你的问题,请参考以下文章