交换两个整数
Number Swap
题目详情
在不使用额外存储空间的情况下,交换两个整数 与 。
Swap two ints and w/o extra space?
解析
两种常见方法:
- 加减法:
void swap(int &i, int &j){
i = i + j;
j = i - j;
i = i - j;
}- 按位异或:
void swap(int &i, int &j){
i = i ^ j;
j = i ^ j;
i = i ^ j;
}Original Explanation
Answer:
- Sum-difference:
void swap(int &i, int &j){
i = i + j;
j = i - j; // old i
i = i - j; // old j
}- Bitwise XOR:
void swap(int &i, int &j){
i = i ^ j;
j = i ^ j; // old i
i = i ^ j; // old j
}