Статьи Утилиты Telegram YouTube Отзывы

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

1 мая 2018

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

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

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

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

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

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

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

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


Облако тэгов

Kotlin, Java, Spring, Spring Boot, Spring Data, SQL, PostgreSQL, Oracle, Linux, Hibernate, Collections, Stream API, многопоточность, файлы, Nginx, Apache, maven, gradle, JUnit, YouTube, новости, руководство, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml.

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


Комментарии

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

×

devmark.ru