Минимизируйте операции по преобразованию (0, 0) в (N, M) путем увеличения одного или обоих на K

Опубликовано: 20 Сентября, 2022

Даны два целых числа N и M , задача состоит в том, чтобы вычислить минимальное количество операций, необходимых для преобразования (0, 0) в (N, M), используя следующие операции:

  • Выберите любое целое число K и преобразуйте (x, y) в (x + K, y + K) .
  • Выберите любое целое число K и преобразуйте (x, y) в (x – K, y + K) или (x + K, y – K) .

Примеры:

Input: N = 3, M = 5
Output: 2
Explanation: In 1st operation, take K = 4, and perform 1st operation i.e, (0 + 4, 0 + 4) -> (4, 4). In 2nd operation, take K = 1 and perform 2nd operation i.e, (4 – 1, 4 + 1) -> (3, 5) which is the required value. 

Input: N = 1, M = 4
Output: -1
Explanation: No possible sequence of given operations exists to convert (0, 0) to (1, 4). 

Подход: Данную задачу можно решить, используя наблюдение, что каждую пару (N, M) можно разделить на четыре следующих случая:

  • Случай 1, где (N, M) = (0, 0). В таких случаях потребуется 0 операций.
  • Случай 2, где N = M. В таких случаях выбираем K = N и выполняем 1-ю операцию. Следовательно, требуется только одна операция.
  • Случай 3, где N и M имеют одинаковую четность, т. е. N % 2 = M % 2. В таких случаях можно заметить, что требуемое количество операций всегда равно 2.
  • Случай 4, когда N и M имеют разную четность, т. е. N % 2 != M % 2. В таких случаях не существует возможной последовательности операций.

Ниже приведена реализация вышеуказанного подхода:


Временная сложность: O(1)
Вспомогательное пространство: O(1)