我想分享一个在面试中经常被问到的问题,我无法回答这个问题,但最终我找到了答案:
如何在不使用第三个变量的情况下交换两个变量的值??
发布于 2013-08-21 19:40:16
此方法适用于任何变量类型:
$a = 5;
$b = 6;
list($a, $b) = array($b, $a);
print $a . ',' . $b;输出:
6,5另一种简单的方法(只适用于数字,不适用于字符串/数组/等)是
$a = $a + $b; // 5 + 6 = 11
$b = $a - $b; // 11 - 6 = 5
$a = $a - $b; // 11 - 5 = 6
print $a . ',' . $b;输出:
6,5发布于 2013-08-21 19:42:00
你肯定想要XOR swap algorithm吧?至少对于数值变量是这样的。
传统交换需要使用临时存储变量。但是,使用XOR交换算法时,不需要临时存储。算法如下:
X := X异或Y
Y := X异或Y
X := X异或Y
虽然我从来没有见过它在真实的场景中使用(除了汇编工作)
https://stackoverflow.com/questions/18356437
复制相似问题