【发布时间】:2022-01-07 01:12:13
【问题描述】:
我的主要目标是返回一个二维数组 int[ ] 的所有元素 int[ ] 是否存在于另一个二维数组中。
我已经尝试使用Arrays.deepEquals(),但在这种情况下,元素的顺序很重要,这不是目的。
- 例如,Int[ ][ ] 数组的长度不会超过 15。
- Int[ ][ ] 数组的长度始终相同。
- Int[ ][ ] 数组顺序无关紧要,但 Int[ ] 数组可以。
- Int[ ] 数组始终是一对。
预期:
int[][] array1 = {{1, 2}, {2, 2}, {0, 1}, {3,4}} // Main Array
int[][] array2 = {{0, 1}, {2, 2}, {3,4} {1, 2}}} // Expected: true
int[][] array3 = {{6, 3}, {1, 2}, {7,4} {0, 1}}} // Expected: false
这是我的解决方案/尝试:
// Check if an int[] array (element) belongs to an int[][] array.
public static boolean inVector(int[][] 2dArray, int[] 1dArray) {
for (int i = 0; i < 2dArray.length; i++) {
for (int j = 0; j < 2dArray[i].length; j++) {
if (1dArray[0] == 2dArray[i][0] && 1dArray[1] == 2dArray[i][1]) {
return true;
}
}
}
return false;
}
// Check if all int[] arrays of an int[][] belong to another int[][] array.
// This is not working properly
public boolean allBelongs() {
boolean belongs = false;
for (int i = 0; i < array1.length; i++) {
if (inVector(array1, array2()[i])) {
belongs = true;
}
else {
belongs = false;
}
}
return belongs;
}
编辑:我解决了问题,颠倒了解决方案的逻辑。发表了自己的答案。
【问题讨论】:
-
您有具体的性能要求吗?您希望数组有多大?
-
例如,如果数组通常非常小,最简单和最快的解决方案可能是嵌套循环,循环遍历第一个数组中的每个子数组 A,然后遍历第二个数组中的每个子数组 B ,检查A是否深等于B,如果每个A都是这样,则返回true,否则返回false
-
不,我没有任何性能要求。
-
Int[ ] 数组总是成对的。 :)
-
例如,我希望 int[ ] [ ] 数组的长度不超过 15。
标签: java arrays java-8 equals deepequals