Подсчитайте количество уникальных пар, отличающихся на 1 в 2 целых массивах

#java

#java

Вопрос:

Танцующая пара

Делийская государственная школа проводит соревнования по шахматам в честь своего 30-летия. Для этого зарегистрировались N мальчиков и M девочек. Руководство школы должно составлять пары (поскольку шахматы — это игра для 2 человек).

В паре должен быть один мальчик и одна девочка. Однако шахматные навыки партнеров в каждой паре должны отличаться не более чем на единицу. Для каждого мальчика мы знаем его шахматные навыки. Аналогично, для каждой девушки мы знаем ее навыки игры в шахматы.

Вы, будучи в комитете по управлению, должны определить максимально возможное количество пар, которые могут быть сформированы из N мальчиков и M девочек.

Ввод: первая строка содержит T, обозначающее количество тестовых примеров. Для каждого тестового примера в T,

 The first line contains a single integer N, denoting the number of boys.
The second line contains N space-separated integers denoting skills of N boys.
The third line contains a single integer M, denoting the number of girls.
The fourth line contains M space-separated integers denoting skills of M girls.
  

Вывод:
Выведите в новой строке максимальное количество пар, которые могут быть сформированы, в которых каждая пара навыков мальчика и девочки отличается не более чем на 1.

Ограничения:

 1<=N<=1e5
1<=M<=1e5
0<=1e9<=skills.
  

Пример ввода:

 2
3
1 2 3
3
2 3 4
4
2 3 4 5
3
6 7 8
  

Пример вывода:

 3
1
  

Объяснение:

В первом тестовом примере 1-й мальчик может быть в паре с 1-й девочкой (разница в навыках = 1), 2-й мальчик со 2-й девочкой (разница в навыках = 1) и 3-й мальчик с 3-й девочкой (разница в навыках = 1). Мы видим, что каждая пара имеет не более 1 разницы в навыках своих партнеров. Во втором тестовом примере только 3-й мальчик и 1-я девочка могут быть в паре (разница в навыках = 1), для каждой другой пары разница будет больше 1.

Пример ввода:

 2
3
3 6 7 
4
7 5 7 10 
3
2 9 1 
5
2 7 2 7 11 
  

Вывод:

 2
2
  

Мое решение, но оно передает только 2 из 4 тестовых примеров, и у меня нет других входных тестовых примеров, так что, ребята, скажите, где может быть ошибка, и это нужно делать только на Java

 //import java.io.BufferedReader;
//import java.io.IOException;
//import java.io.InputStreamReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

class Main {
    public static void main(String[] arrgs) throws IOException {
        Scanner obj = new Scanner(System.in);
//        BufferedReader bi = new BufferedReader(new InputStreamReader(System.in));
//        String[] strNumsBoys ;
//        String[] strNumsGirls ;

        ArrayList<Integer> all = new ArrayList<>();
        int t = obj.nextInt();
        while (t != 0) {
            int count = 0;
            int numberOfBoys = obj.nextInt();
//                strNumsBoys = bi.readLine().split("\s");
//                for (int i = 0; i < strNumsBoys.length; i  ) {
//                    boysSkills[i] = Integer.parseInt(strNumsBoys[i]);
//                }
//            strNumsBoys = obj.nextLine().split("\s");
//            for (int i = 0; i < numberOfBoys; i  ) {
//                boysSkills[i] = Integer.parseInt(strNumsBoys[i]);
//            }
            int[] boysSkills = new int[numberOfBoys];

            for(int i=0;i<numberOfBoys;i  )
            {
                boysSkills[i] = obj.nextInt();

            }
            int numberOfGirls = obj.nextInt();
//            strNumsGirls = bi.readLine().split("\s");
//            for (int i = 0; i < strNumsGirls.length; i  ) {
//                girlsSkills[i] = Integer.parseInt(strNumsGirls[i]);
//            }
//            strNumsGirls = obj.nextLine().split("\s");
//            for (int i = 0; i < numberOfGirls; i  ) {
//                girlsSkills[i] = Integer.parseInt(strNumsGirls[i]);
//            }
            int[] girlsSkills = new int[numberOfGirls];
            for(int i=0;i<numberOfGirls;i  )
            {
                girlsSkills[i] = obj.nextInt();

            }
            for (int i = 0; i < numberOfBoys; i  ) {
                int incresed = boysSkills[i];
                incresed = incresed   1;
                for (int k = 0; k < numberOfGirls; k  ) {
                    if (incresed == girlsSkills[k]) {
                        count = count   1;
                    }
                }
            }
            int out = count;
            all.add(out);
            t = t - 1;
        }
        all.forEach(System.out::println);
    }
}


  

Ответ №1:

Вы не приняли эти 2 случая:

  1. когда boysSkills [i]== girlsSkills [i], поскольку разница составляет почти 1.
  2. уменьшенная переменная также, поскольку запрашивается разница, и она может быть положительной или отрицательной.