但在大厂面试中,有一道非常经典的数字交换题目:如何在不引入第三个中间变量的情况下,完成两个数字的交换。
这里可以用到一个数学上的技巧:
a = a + b;
b = a - b;
a = a - b;
除了这种先加后减的写法,还有一种先减后加的写法:
a = b - a;
b = b - a;
a = a + b;
但这两种方式都可能导致数字越界。
更好的方案是通过位运算完成数字交换:
a = a ^ b;
b = b ^ a;
a = a ^ b;
文章讨论了在大厂面试中常出现的数字交换问题,介绍了不使用额外变量的两种方法(先加后减和先减后加),以及更优的位运算实现,以避免数字越界。
但在大厂面试中,有一道非常经典的数字交换题目:如何在不引入第三个中间变量的情况下,完成两个数字的交换。
这里可以用到一个数学上的技巧:
a = a + b;
b = a - b;
a = a - b;
除了这种先加后减的写法,还有一种先减后加的写法:
a = b - a;
b = b - a;
a = a + b;
但这两种方式都可能导致数字越界。
更好的方案是通过位运算完成数字交换:
a = a ^ b;
b = b ^ a;
a = a ^ b;
412
1626

被折叠的 条评论
为什么被折叠?
