Compare arrays

Здравейте, имам проблем с една задача:
Write a program that reads two int arrays of size N from the console and compares them element by element. Print Equal if the two arrays are the same and Not equal if they are not
Първото ми го изкарва правилно, второто не. Ако е възможно дали ще може да се даде решение?
Ето ми го кода
Scanner scanner = new Scanner(System.in);
int n = Integer.parseInt(scanner.nextLine());
int[] arr1 = new int[] {};
int[] arr2 = new int[] {};

    if(Arrays.equals(arr1, arr2)) {
        System.out.println("Equal");
    }else {
        System.out.println("Not Equal");
    }
}

}

Може преди да ги сравниш да ги сортираш по възходящ ред например.

1 Like

По условие се иска Not equal, а ти принтираш Not Equal - виж да не е от това проблемът. Успех:)

1 Like
  Ето решение https://pastebin.com/1QUS3SXh , като първо сортираш ,след това сравняваш елементите.
1 Like

А защо трябва да ги сортира първо, така нали ще им размести елементите, какъв е смисълът да ги сравнява след сорт? Не трябва ли да се сравнят масивите както са подадени в input-a? Или на мен нещо ми убягва от условието?
Тези долу трябва да изкарват резултат “equal” ли?

int arr1[] = { 1, 3, 2 };
int arr2[] = { 1, 2, 3 };

Защото може някои индекси след сортиране да не съвпаднат.Ето алгоритъм:
Solution Steps

  • Compare the lengths of arr1 and arr2 . If they are equal, then we will continue otherwise return false .
  • Sort arr1 and arr2 either in ascending or descending order.
  • For each index i of the array, compare arr1[i] and arr2[i] to be equal.
  • If at any point the condition fails, then return False otherwise, at the end of the comparison, return True .

Ама за да са equal arrays, трябва и подредбата на елементите да съвпада, виж: “Two arrays are considered equal if both arrays contain the same number of elements, and all corresponding pairs of elements in the two arrays are equal. In other words, two arrays are equal if they contain the same elements in the same order. Also, two array references are considered equal if both are [null]”(Java.util.Arrays.equals() in Java with Examples - GeeksforGeeks).

Както и да е, де, ако горното решение минава в judge-a, явно аз не им разбирам условието на задачата:) (нямам линк към самата задача).

1 Like

Здравей, от това което виждам използваш “Arrays.equals”, алгориъма отзад ще направи следното:

int[] arr1 = new int[] { 1, 2, 3, 4}
int[] arr2 = new int[] { 1, 2, 3, 4}
int[] arr3 = new int[] { 1, 2, 4, 3}

Ако използвае Arrays.equals за arr1 и arr2, ще вътрне True, за arr1/arr2 сравнен с arr3 ще върне False. Или с други думи казано:
Two arrays are considered equal if both arrays contain the same number of elements, and all corresponding pairs of elements in the two arrays are equal. In other words, two arrays are equal if they contain the same elements in the same order.

Трябва да сортираш и тогава да ги сравниш с Arrays.equals.

Поне според мен затова ти гърми.

Може да решиш задачата, като провериш дължината дали съвпада, след това да направиш 1 фор циъкл до дължината на масива и да сравняваш елемент по елемент, ако удариш кейс в който са различни принтираш “Not equal” и спираш програмата, в другия случай принтираш “Equal” или каквото се иска по условие.

1 Like