Как поменять два значения местами без третьей переменой. Популярные задачи для ИТ собеседований.

Rubik's cube

Казалось бы данная задача не решаема, в случае когда отсутствует третья переменная. Обычно можно было бы присвоить промежуточное значение в третью переменную и две другие обменять местами. Ну, а продублированное значение забрать опять таки из третьем переменой, давайте рассмотрим пример.

a = 1
b = 2

c = a
a = b
b = c

На самом же деле все обстоит иначе, существует несколько методов обмена значений без промежуточных переменных. Давайте их рассмотрим:

Арифметические методы сложения/вычитания и деления/умножения

Операции сложения/вычитания:

a = a + b
b = a - b
a = a - b

Операции деления/умножения:

a = a * b
b = a / b
a = a / b

Главным недостатком такой замены значений является большое количество операций. Также операции деления и умножения являются более «дорогостоящими».

Побитные операции

a = a xor b
b = b xor a
a = a xor b

Leave a Comment