Я думал о следующей проблеме: есть два массива, и мне нужно найти элементы, не общие для них обоих, например:
a = [1,2,3,4]
b = [1,2,4]
И ожидаемый ответ [3]
.
До сих пор я делал это так:
a.select { |elem| !b.include?(elem) }
Но это дает мне временную сложность O(N ** 2)
. Я уверен, что это можно сделать быстрее;)
Кроме того, я думал о том, чтобы как-то это сделать (используя некоторый метод, противоположный &
, который дает общие элементы из 2 массивов):
a !& b #=> doesn't work of course
Другим способом может быть добавление двух массивов и поиск уникального элемента с помощью некоторого метода, аналогичного uniq
, так что:
[1,1,2,2,3,4,4].some_method #=> would return 3