【问题标题】: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,这是错误的!

那么,我如何检查数组中的某个元素是否已经出现,以便代码不会考虑它。

【问题讨论】:

标签: java arrays


【解决方案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 中的变量名应为小写。

    【讨论】:

      猜你喜欢
      • 2013-02-20
      • 2012-09-02
      • 2020-12-03
      • 2014-09-27
      • 1970-01-01
      • 2011-11-14
      • 2017-03-11
      • 2012-12-31
      • 1970-01-01
      相关资源
      最近更新 更多