论坛首页 招聘求职论坛

今天去面试了一次。。悲剧了。。大家帮看看这题

浏览 25574 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (10)
作者 正文
   发表时间:2011-07-11  

//交换a和b的值

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


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

...没想到怎么搞。。。
   发表时间:2011-07-12   最后修改: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 );
}
0 请登录后投票
   发表时间:2011-07-12  
如果是c或者c++,这样就行了:
public void swap(int & a ,int & b){
    int temp = a;
    a = b;
    b = temp;
}

如果是Java,简单数据类型参数是没戏了。
0 请登录后投票
   发表时间:2011-07-12  
二楼正解,记得是在哪本书上有写
0 请登录后投票
   发表时间:2011-07-12  
这个太基本了吧................
0 请登录后投票
   发表时间:2011-07-12  
我记得我上次面试也问了这个,我当时顿住了,10钞后想出来了,没有第三变量,必然是两个变量相加和相减操作,a=a+b;b=a-b;a=a-b;
0 请登录后投票
   发表时间:2011-07-12  
a = a + b;
b = a - b;
a = a - b;
0 请登录后投票
   发表时间:2011-07-12   最后修改: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 ); 
}
0 请登录后投票
   发表时间: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;
0 请登录后投票
   发表时间:2011-07-12  
难道面试的啥子软公司  ?
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics