比较2d数组中的行



我正在尝试比较二维数组中的行。例如:

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}}

arr1arr2相等,但arr1arr3不相等。

这是树的代码。每个节点可以有任意数量的子节点。如果两个兄弟节点具有相等的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));

相关内容

  • 没有找到相关文章

最新更新