Скажем, у меня есть два массива:
int ArrayA [] = {5, 17, 150, 230, 285};
int ArrayB [] = {7, 11, 57, 110, 230, 250};
Оба массива сортируются и могут быть любого размера. Я ищу эффективный алгоритм для поиска, если массивы содержат любые дублированные элементы между ними. Мне просто нужен истинный/ложный ответ, мне все равно, какой элемент является общим или сколько.
Наивное решение состоит в том, чтобы перебирать каждый элемент в ArrayA и выполнять двоичный поиск для него в ArrayB. Я считаю, что эта сложность - O (m * log n).
Поскольку оба массива отсортированы, кажется, что должен быть более эффективный алгоритм.
Мне также хотелось бы получить общее решение, которое не предполагает, что массивы содержат числа (т.е. решение должно также работать для строк). Однако операторы сравнения хорошо определены и оба массива отсортированы от наименьшего к наибольшему.