面试之路(2)-百度算法题

题目:

实现Swap(int a,int b)要求是不使用临时变量,可以使用四则运算和异或等运算

思路:

  • 可以使用异或,如果如何int值和0异或等于自身,而且int值和自身异或结果是零,符合交换律
  • 加法的思路是也是一样,先加上后减去,也是等于自身

答案:

  • 异或:(异或用^表示)
swap(int a,int b){
     a = a ^ b;
     b = a ^ b;
     a = a ^ b;
}
  • 加法
swap(int a,int b){
    a = a + b;
    b = a - b;
    a = a - b;
}
  • 加法和乘法
swap(int a,int b){
    a = (b) + (b = a)* 0;
}

你可能感兴趣的:(算法,面试,百度,swap)