查找 3 个二维数组中的相似行

2023-12-08

在 Java 中解决以下问题的最佳方法是什么? 有 3 个行数和列数相等的二维数组:

Array1:
[1]: {1, 2, 3}
[2]: {2, 2, 4}
[3]: {1, 1, 1}

Array2:
[1]: {1, 2, 0}
[2]: {1, 2, 3}
[3]: {1, 0, 1}

Array3:
[1]: {1, 1, 1}
[2]: {1, 2, 3}
[3]: {1, 0, 1}

我需要找出答案行的索引存在于所有数组中。在上面的例子中,答案应该是:[1],[2],[2]

Array1 [1]:{1,2,3}

Array2: [2]:{1,2,3}

Array3: [2]:{1,2,3}

更新:有没有内置函数可以做到这一点?或者 FOR 循环是唯一的解决方案?


我会做以下事情:

  • 创建一个类,该类接受数组中的一行并实现hashcode and equals.
  • 将前两个数组中的每一行(包装在上面的类中)插入到两个数组中HashMaps
  • 对于最后一个数组中的每一行,确定它们是否存在于HashMaps

编辑#2,意识到映射需要反转。

private Map<MyClass, Integer> map(int[] array){
  Map<MyClass, Integer> arrayMap = new HashMap<>();
  for (int i; i<array.length; i++)
        arrayMap.put(new MyClass(array[i]), i);
}

private mySearch(){
   int[] array1, array2, array3;

   Map<MyClass, Integer> map1 = map(array1);
   Map<MyClass, Integer> map2 = map(array2);

   for (int i=0; i<array3.lenght; i++){
      MyClass row = new MyClass(array3[i]);
      Integer array1Row = map1.get(row);
      Integer array2Row = map2.get(row);

      if (array1Row != null && array2Row != null){
         // Matching rows found
      }
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找 3 个二维数组中的相似行 的相关文章

随机推荐