Даны два массива
чисел. Выведите те элементы первого массива (в том порядке, в каком они идут в
первом массиве), которых нет во втором массиве.
Вход. Сначала подаётся количество n элементов в первом массиве, затем n чисел – элементы массива. Затем записано количество m элементов во втором массиве. Далее
заданы элементы второго массива. Количество элементов каждого массива не
превышает 100. Все элементы – целые числа.
Выход. В первой строке
выведите количество искомых элементов, а во второй выведите те элементы первого
массива, которых нет во втором, в том порядке, в каком они идут в первом
массиве.
Пример
входа |
Пример
выхода |
7 3 1 3 4 2 4 12 6
4 15 43 1 15
1 |
4 3 3 2 12 |
структура
данных – set
Занесем элементы первого массива в линейный массив, а элементы
второго массива во множество set. Совершим следующие операции:
·
Подсчитаем количество элементов первого массива, которых
нет во множестве (втором массиве).
·
Выведем это количество.
·
Еще раз пройдем по элементам первого массива и выведем те
из них, которых нет во множестве (втором массиве).
Пример
Слева приведен первый массив. Справа – множество, в которое
поместили все элементы второго массива. Выделены элементы первого массива,
которых нет во множестве (втором массиве).
Читаем входные
данные.
scanf("%d",&n);
for(i = 0; i < n; i++)
scanf("%d",&mas[i]);
scanf("%d",&m);
Заносим элементы второго массива во множество s.
for(i = 0; i < m; i++)
{
scanf("%d",&val);
s.insert(val);
}
В переменной cnt
подсчитываем количество элементов первого массива, которых нет во втором.
cnt = 0;
for(i = 0; i < n; i++)
if
(s.find(mas[i]) == s.end()) cnt++;
Выводим количество искомых элементов.
printf("%d\n",cnt);
Выводим элементы первого массива, которых нет во втором.
for(i = 0; i < n; i++)
if
(s.find(mas[i]) == s.end()) printf("%d ",mas[i]);
printf("\n");
Java реализация
import java.util.*;
//import java.io.*;
public class Main
{
public static void main(String []args) //throws IOException
{
Scanner con = new Scanner(System.in);
//Scanner con = new Scanner(new FileReader
("2099.in"));
TreeSet<Integer> s = new TreeSet<Integer>();
int n = con.nextInt();
int mas[] = new int[n];
for(int i = 0; i < n; i++)
mas[i] = con.nextInt();
int m = con.nextInt();
for(int i = 0; i < m; i++)
{
int val = con.nextInt();
s.add(val);
}
int cnt = 0;
for(int i = 0; i < n; i++)
if (!s.contains(mas[i])) cnt++;
System.out.println(cnt);
for(int i = 0; i < n; i++)
if (!s.contains(mas[i])) System.out.print(mas[i] + " ");
con.close();
}
}