равен ли 2 arraylist или нет - PullRequest
       17

равен ли 2 arraylist или нет

0 голосов
/ 20 октября 2019
public boolean isSymmetric(TreeNode A) {
        if(A==null)
            return true;
     /*   if(isSymmetric(A.left) && isSymmetric(A.right))
            return 1;
        else return 0;*/
        ArrayList<Integer> al1= preorder(A);
        System.out.println(al1);
        al.clear(); 
        //System.out.println("common "+al);
        p=invertTree(A);
        ArrayList<Integer> al2= preorder(p);
        System.out.println(al2);
        int i=0,j=0;
        while(i<al1.size() && i<al2.size())
        {
            System.out.println(al1.get(i)+" "+al2.get(i));
            if(al1.get(i)!=al2.get(i))
                    return false;
            i++;
        }
        return true;
    }

Я пытаюсь сравнить, имеют ли 2 arraylist одинаковые элементы в той же последовательности или нет

Ваш ввод

[1,2,2, ноль, 3, ноль, 3]

стандартный вывод

[1, 2, -1, 3, -1, -1, 2, -1, 3, -1,-1] // напечатано al1

[1, 2, 3, -1, -1, -1, 2, 3, -1, -1, -1] // напечатано al2

1 1 2 2 3 3

-1 -1

-1 -1

-1 -1 2 2 3 3

-1-1

-1 -1

-1 -1

// не знаю, как они отображают одинаковые элементы Вывод true

Ожидаемое ложное

1 Ответ

0 голосов
/ 20 октября 2019

Предположим, у вас есть списки массивов al1 и al2. Таким образом вы можете проверить, равны ли они (одинаковый размер и одинаковые значения во всех позициях)

boolean same = true;
if ((al1 == null) != (al2 == null)) {
    same = false;
} 
if (al1.size() != al2.size()) {
    same = false;
} else {
    for (int i = 0; same && (same = al1.get(i).equals(al2.get(i)); i++);
    //The result is in same
}
...