实现一个函数原地交换两个数,且不能用辅助空间。
思路:
经典问题。
void swap(int& a, int& b) { a = b - a; b = b - a; a = b + a; } void swap(int& a, int& b) { a = a ^ b; b = a ^ b; a = a ^ b; }
如果参数是两个相同的数,则不可以调用以上两个形式的swap函数,因为会有一个数被置0。如果程序中swap可能会作用在相同的数,则只能用一个临时变量的swap函数。
void swap(int& a, int& b) { int temp = a; a = b; b = temp; }