NSIndexPath не распознает элемент, раздел или строку как свойства

Вычислить все возможные значения для a_w + a_x, вставить их в хэш-таблицу. Вставьте (a_w + a_x, w) и (a_w + a_x, x) во вторую хеш-таблицу.

Прежде чем вставлять значение в первую хеш-таблицу, проверьте, уже ли она в таблице. Если да, проверьте вторую таблицу. Если есть один из (a_w + a_x, w) или (a_w + a_x, x), не вставляйте ничего (у нас есть дублирующий элемент). Если ни одна из этих пар не во второй таблице, у нас есть положительный ответ.

Если после обработки всех (w, x) пар у нас нет положительного ответа, это означает, что нет такие попарно отличающиеся индексы.

Сложность по времени - O (n2). Требования к пространству также O (n2).

В этом случае можно сделать то же самое в O (n) пространстве, но O (n2 * log (n)) время со слегка модифицированным алгоритмом из этого ответа: Сумма-подмножество с фиксированным размером подмножества :

  1. Сортировка списка.
  2. Используйте очередь приоритетов для элементов, содержащую a_w + a_x в качестве ключа и w, x в качестве значений. Предварительно заполните эту очередь элементами n-1, где x = 0 и w = 1 .. n-1.
  3. Повторно введите минимальный элемент (sum, w, x) из этой очереди и поместите элемент (a_w + a_x_plus_1, w, x+1) в queue (но не ставьте элементы при x> = w). Остановитесь, когда два последовательных элемента, удаленные из очереди, имеют одинаковую сумму.
  4. Чтобы обрабатывать дубликаты, можно сравнить w, x двух последовательных элементов, имеющих равную сумму. Но легче использовать кримампани для предварительной обработки. Если отсортированный список содержит две пары дубликатов или один элемент дублируется 4 раза, успех. В противном случае дублируется не более одного значения; оставьте в списке только один экземпляр и добавьте его удвоенное значение в очередь приоритетов вместе со «специальной» парой индексов: (2a, -1, -1).

13
задан Carl Carlson 8 July 2014 в 02:28
поделиться