Минимизируйте ходы, чтобы сделать X и Y равными, используя заданные операции вычитания

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

Учитывая два положительных целых числа, X и Y , задача состоит в том, чтобы найти минимальное количество операций, чтобы сделать X и y равными, где в одной операции мы можем выбрать любое положительное целое число Z и выполнить следующий процесс.

  • Если число Z четное , вычтите Z из X.
  • Если число Z нечетное , прибавьте Z к X.

Примеры:

Input: X = 4, Y = 7
Output: 1
Explanation:  Select Z = 3, then the new X will be 4 + 3 = 7. 
Hence, it requires only one operation.

Input: X = 6, Y = 6 
Output: 0
Explanation: Both of them are already the same. 
Hence, it requires 0 operations.

Подход: Эта проблема может быть решена с помощью Жадный подход основан на следующем наблюдении:

There are only three possible answers: 

  • First, if X = Y, no operation is required,  
  • Second, If X > Y and X − Y is even or X < Y and Y − X is odd, then only 1 operation is required. 
  • Third, if X > Y and X − Y is odd or X < Y and Y − X is even, then there is need for 2 operations. One move extra is required for turning it to the second case

Выполните следующие шаги, чтобы решить эту проблему:

  • Найдите отношение между X и Y .
  • Теперь на основе отношения найдите, сколько ходов необходимо, основываясь на приведенном выше наблюдении.

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

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