O (N) время, O (N) память
HT = Хэш-таблица
HT.clear () пробегаются через список для каждого объекта, который Вы видите
if(HT.Contains(item)) -> HT.Remove(item)
else
ht.add(item)
в конце, объект в HT является объектом, который Вы ищете.
Примечание (кредит @Jared Updike): Эта система найдет все Нечетные экземпляры объектов.
<час>комментарий : Я не вижу, как люди могут проголосовать за решения, которые дают Вам работу NLogN. в котором вселенная - это "лучше"? Я еще более потрясен, Вы отметили принятый ответ s решение NLogN...
я действительно соглашаюсь однако что, если бы память требуется, чтобы быть постоянной, то NLogN был бы (до сих пор) лучшим решением.
Похоже, это ошибка в Form.WmNCHitTest. Я считаю, что способ определения координат x и y неверен (чтобы получить y, он делает HIWORD ((int) ((long) lParam))
, где в документации указано использовать GET_Y_LPARAM
, который определяется как ((int) (short) HIWORD (lParam))
).
Он использует этот метод, только если у вас включен размер ручки. Отключение ручки размера обходит этот код и заставляет форму работать правильно.