如何在二维数组中找到重复项?

时间:2016-02-26 23:33:20

标签: java arrays duplicates 2d

我已经尝试过我发现的一切。我实际上需要调用函数。到目前为止,唯一产生某种结果的是这段代码,但结果是错误的。我很乐意帮忙。

谢谢!

public class pru {
public static void main (String[] args){
    String ejnombre[][]=new String[][]{
                        {"Lu", "Raul", "Maiz"},
                        {"Dias", "Dick", "Maiz"},
    };

    for (int i=0; i<ejnombre.length; i++){
        for (int j=0; j<ejnombre[i].length; j++){
            for(int k=0; k<ejnombre.length; k++){
                for(int l=0; l<ejnombre[i].length; l++){
                        if (ejnombre[i][j].equals(ejnombre[k][l])){
                            System.out.println(ejnombre[i][j]);

                }
               }
            }
        }
    }
  }
}

2 个答案:

答案 0 :(得分:1)

您还可以检测到与自身相同的所有细胞。简单地排除这种情况:

if (ejnombre[i][j].equals(ejnombre[k][l]) && (i != k || j != l)) {
    System.out.println(ejnombre[i][j]);
}

答案 1 :(得分:0)

您可以使用callq %rax并仅在您的算法复杂度 O(N)

的情况下迭代您的数组一次
HashSet

这是 public static void main(String[] args) { String ejnombre[][]=new String[][]{ {"Lu", "Raul", "Maiz"}, {"Dias", "Dick", "Maiz"}, }; Set<String> set = new HashSet<>(); for (int i=0; i<ejnombre.length; i++){ for (int j=0; j<ejnombre[i].length; j++){ if (set.contains(ejnombre[i][j])) { System.out.println(ejnombre[i][j]); } else { set.add(ejnombre[i][j]); } } } }

的输出