Минимизируйте операции по преобразованию A в B, добавляя любое нечетное целое число или вычитая любое четное целое число.
Опубликовано: 20 Сентября, 2022
Даны два положительных целых числа A и B . Задача состоит в том, чтобы найти минимальное количество операций , необходимых для преобразования числа A в B . За ход к числу A можно применить любую из следующих операций:
- Выберите любое нечетное целое число x (x>0) и добавьте его к A, т.е. (A+x) ;
- Или выберите любое четное целое число y (y>0) и вычтите его из A ie (Ay) .
Примеры:
Input: A = 2, B = 3
Output: 1
Explanation: Add odd x = 1 to A to obtain B (1 + 2 = 3).Input: A = 7, B = 4
Output: 2
Explanation: Two operations are required:
Subtract y = 4 from A (7 – 4 = 3).
Add x = 1 to get B (3 + 1 = 4).
Подход: это проблема, основанная на реализации. Выполните следующие шаги, чтобы решить данную проблему.
- Сохраните абсолютную разницу AB в переменной diff .
- Проверьте, равно ли A значению B . Поскольку два целых числа равны, общее количество операций будет равно 0 .
- В противном случае проверьте, если A < B .
- Если да, проверьте, является ли их разница четной или нечетной.
- Если diff нечетное, операция A+x применяется один раз ( x — нечетное целое число, равное diff ). Общее количество операций равно 1 .
- В противном случае diff будет четным, дважды примените операцию A +x , во-первых, где x равно diff -1 (нечетному), а во-вторых, где x равно 1 . Или за операцией A+x может следовать операция Ay . В любом случае общее количество операций будет равно 2.
- Если да, проверьте, является ли их разница четной или нечетной.
- В противном случае, если A> B , применяется противоположный набор операций, т.е.
- Если разница четная, операция Ay применяется один раз.
- В противном случае может быть применена операция Ay , за которой следует операция A+x . Или операцию Ay можно применить дважды .
Следовательно, количество операций всегда будет либо 0, либо 1 , либо 2.
Ниже приведена реализация вышеуказанного подхода.
Сложность времени: О(1)
Вспомогательное пространство: О(1)