阅读 26044 次
发表时间:2011-07-11

//交换a和b的值

public void swap(int a ,int b){
    int temp = a;
    a = b;
    b = temp;
}


要求:修改此方法,不能定义temp中间变量,实现值得交换

...没想到怎么搞。。。
发表时间:2011-07-12
  public void swap(int a ,int b){
b = a + b;

a = b - a;
b = b - a;

System.out.println(" a = " + a );
System.out.println(" b = " + b );
}
发表时间:2011-07-12
如果是c或者c++,这样就行了:
public void swap(int & a ,int & b){
    int temp = a;
    a = b;
    b = temp;
}

如果是Java,简单数据类型参数是没戏了。
发表时间:2011-07-12
二楼正解,记得是在哪本书上有写
发表时间:2011-07-12
这个太基本了吧................
发表时间:2011-07-12
我记得我上次面试也问了这个,我当时顿住了,10钞后想出来了,没有第三变量,必然是两个变量相加和相减操作,a=a+b;b=a-b;a=a-b;
发表时间:2011-07-12
a = a + b;
b = a - b;
a = a - b;
发表时间:2011-07-12
zhangyang6380006 写道
我记得我上次面试也问了这个,我当时顿住了,10钞后想出来了,没有第三变量,必然是两个变量相加和相减操作,a=a+b;b=a-b;a=a-b;

如果2个变量都是数字,这样可以
字符串的话,就不行了。
这样比较通用:
public void swap(int a ,int b){ 
    b ^= a ^= b ^= a;
    System.out.println(" a = " + a ); 
    System.out.println(" b = " + b ); 
}
发表时间:2011-07-12
jancy 写道
zhangyang6380006 写道
我记得我上次面试也问了这个,我当时顿住了,10钞后想出来了,没有第三变量,必然是两个变量相加和相减操作,a=a+b;b=a-b;a=a-b;

如果2个变量都是数字,这样可以
字符串的话,就不行了。
这样比较通用:
b ^= a ^= b ^= a;


写这么复杂。。。。。

实际上就是异或操作

a=a^b;
b=b^a;
a=b^a;
发表时间:2011-07-12
难道面试的啥子软公司  ?
Global site tag (gtag.js) - Google Analytics