algorithm - 如何编写一个算法来交换两个变量而不创建第三个变量?
问题描述
如何在不创建第三个变量的情况下交换两个变量?例如。a=10 b=20 那么,我如何编写一个算法来将这两个变量交换为 a=20 b=10 而无需在我的逻辑中添加另一个变量 c ?
解决方案
您可以使用此技术
a=a+b
b=a-b
a=a-b
编辑 1:正如 pjs 所评论的,上述技术可能会在某些语言中溢出,因此您可以使用 XOR:
a=a^b
b=a^b ## which is b= (a^b)^b=a
a=a^b ## which is b= (a^b)^a=b
推荐阅读
- assembly - 缓冲区溢出函数地址被转义
- azure-ad-b2c - Azure Active Directory B2C - 应用服务 API 防火墙限制
- python - 根据具有爆炸和数组的条件复制行
- angular - Angular 4 Kendo 柱形图默认显示值并在底部显示 Y 轴名称
- c# - Entity Framework Core 3.0 使用 DbSet vs.DbQuery 和 FromSqlRaw 时的不同结果
- c++ - 带有参数 std::ofstream& 的 C++“错误:没有匹配的调用函数”
- scala - 映射集合并返回与输入相同类型的容器
- batch-file - 如何在 Camunda Cockpit 中批量删除失败的作业?
- vue.js - 如何在 vuetify 文本区域标签中使用 v-icon 而不是文本?
- javascript - 如何使用 Javascript 初始化自定义 html 类