我正在尝试比较二维数组中的行。例如:
arr1={{1, 0, 0, 0} , {0, 0, 0, 0} , {0, 1, 0, 0}}
arr2={{0, 0, 0, 0} , {0, 1, 0, 0} , {1, 0, 0, 0}}
arr3={{1, 0, 0, 0} , {0, 0, 0, 1} , {0, 1, 0, 0}}
arr1
和arr2
相等,但arr1
和arr3
不相等。
这是树的代码。每个节点可以有任意数量的子节点。如果两个兄弟节点具有相等的2D数组(正如我在问题中定义的那样),则删除该节点。nodeLabel
显示孩子是否活跃。任何帮助吗?
void removNode(Node subtree){
int count=0;
int [] arr1=new int [num2+1];
int [] arr2=new int [num2+1];
int [][] scharr1=new int [num1+1] [num2+1];
int [][] scharr2=new int [num1+1] [num2+1];
if(!subtree.nodeChildren.isEmpty()){
for(int l=0;l<subtree.nodeChildren.size();l++){
if(subtree.nodeChildren.get(l).nodeLabel==1){
for(int t=0;t<subtree.nodeChildren.size();t++){
scharr1=subtree.nodeChildren.get(l).scharr;
scharr2=subtree.nodeChildren.get(t).scharr;
if(l!=t){
for(int i=0;i<=num1;i++){
arr1=scharr1[i];
for(int k=0;k<=num1;k++){
arr2=scharr2[k];
if(Arrays.equals(arr1, arr2) && subtree.nodeChildren.get(t).nodeLabel==1){
count++;
Arrays.fill(scharr2[k], -1);
k=num1+1;
}
}
}
}
if(count==num1+1){
subtree.nodeChildren.get(t).nodeLabel=0;
}
}
}
count=0;
}
}
}
简单实现:
检查两个2_D数组是否有相同的行。
public boolean areEqual(int arr1[][],int arr2[][]){
int colNum=arr1[0].length;
int rowNum=arr1.length;
int a=0,count,counter=0;
while(a<rowNum){
int b=0;
while(b<rowNum){
count=0;
for(int c=0;c<colNum;c++){
if(arr1[a][c]==arr2[b][c])
count++;
}
if(count==colNum){
counter++;
break;
}
b++;
}
a++;
}
if(counter==rowNum){
return true;
}
else{
return false;
}
}
public static void main(String[] args) {
int arr1[][]={{1, 0, 0, 0} , {0, 0, 0, 0} , {0, 1, 0, 0}};
int arr2[][]={{0, 0, 0, 0} , {0, 1, 0, 0} , {1, 0, 0, 0}};
int arr3[][]={{1, 0, 0, 0} , {0, 0, 0, 1} , {0, 1, 0, 0}};
Array array=new Array();
System.out.println(array.areEqual(arr1,arr2));
System.out.println(array.areEqual(arr1,arr3));
}
}
输出:
真正的
假
匹配2d数组元素:首先匹配长度,然后匹配元素。
public static boolean matchArrays(int[][] arr1, int[][] arr2) {
boolean match = arr1.length == arr2.length;
if (match) {
for (int[] obj1 : arr1) {
if (match) {
for (int[] obj2 : arr2) {
if (Arrays.equals(obj1, obj2)) {
match = true;
break;
} else
match = false;
}
}
}
}
return match;
}
示例调用:System.out.println(matchArrays(arr1, arr2));
System.out.println(matchArrays(arr1, arr3));