Статьи
YouTube-канал

Как обменять значения двух переменных без буфера

1 мая 2018

Тэги: Java алгоритмы головоломки

Если перед вами встанет задача обменять значения двух числовых переменных a и b между собой, скорее всего, вы сделаете это так:

int buffer = a;
a = b;
b = buffer;

То есть поменять значения одновременно нельзя, ибо одно из них затрётся. Чтобы этого не произошло, мы создаём новую буферную переменную, куда и помещаем на время одно из значений.

А что, если нам нужно обменять значения числовых переменных между собой, не создавая новых переменных?

Такой вопрос любят задавать на собеседованиях, однако ограничение весьма искусственное и в современной практике не встречается. Но программисты прошлого могли на такой операции сэкономить лишний байт памяти. И прибегали они к следующему решению:

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

Как видите, решение носит чисто арифметический характер, а потому применимо лишь к числовым типам и не зависит от конкретного языка программирования.


Облако тэгов

Kotlin, Java, Java 16, Java 11, Java 10, Java 9, Java 8, Spring, Spring Boot, Spring Data, SQL, PostgreSQL, Oracle, Hibernate, Collections, Stream API, многопоточность, ввод-вывод, Apache, maven, gradle, JUnit, YouTube, новости, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml

Последние статьи


Комментарии

Добавить комментарий

×

devmark.ru