交换两个数,一般人们都会觉得很Easy,程序手到擒来,思想为:借助第三方变量去交换两个数,代码如下:
void changeNum(int x, int y){
System.out.println("交换之前:x="+x+", y="+y);
int temp = x;
x = y;
y = temp;
System.out.println("交换之后:x="+x+", y="+y);
}
可是面试就是面试嘛,不走寻常路,常常会要求程序员不要借助第三方变量去交换两个数,于是一般程序员小酌一会,思想又来了:
初级思路1:两个数x, y;利用其中一个变量比如x去保存这两个数的和,然后再用和x去减去y,保存于y,这样y的值就变为最初x的值,然后再用和x去减去变换后y就得到最初y的值存于x即可完成,代码如下:
void changeNum(int x, int y){
System.out.println("交换之前:x="+x+", y="+y);
x = x + y;
y = x - y;
x = x - y;
System.out.println("交换之后:x="+x+", y="+y);
}
初级思路2:类似于上面的思路;