我的主要目标是返回一个 2D 数组 int[ ][ ] 的所有元素 int[ ] 是否存在于另一个 2D 数组中。
我已经尝试过使用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;
}
编辑:我解决了反转解决方案逻辑的问题。发表了自己的答案。