面试题 :实现两个整数变量的交换

原创 2015年07月08日 15:13:35

面试题 :实现两个整数变量的交换

本帖子总结了四种整数变量的交换方式:

  • 方式一:开发中常用的,使用中间变量

  • 方式二:不使用中间变量的,“和”实现

  • 方式三:面试中使用的,按位亦或 “^”

  • *方式四:一句话实现交换


方式一:开发中常用的,使用中间变量

* 代码块 *

 public class SwapDemo{
    public static  void main(String[] args) {
        int i = 10;
        int j = 20;

        int temp;
        temp = i;  //i = 10; j = 20; temp = 10;
        i = j;     //i = 20; j = 20; temp = 10;
        j = temp;  //i = 20; j = 10; temp = 10;

        System.out.println("i=" + i + ";j=" + j);
        // "i=20;j=10"
    }
}

方式二:不使用中间变量的,“和”实现

* 代码块 *

public class SwapDemo{
    public static  void main(String[] args) {
        int i = 10;
        int j = 20;

        i = i + j;   //i = 30; j = 20;
        j = i - j;   //i = 30; j = 10;
        i = i - j;   //i = 20; j = 10;

        System.out.println("i=" + i + ";j=" + j);
        // "i=20;j=10"
    }
}

方式三:面试中使用的,按位亦或 “^”

  • “^”的特点:某一数据对另一个数据”^”两次,该数本身不变
  • 面试题也可能描述为:请使用最高效的方法实现两个整数的值交换

* 代码块 *

public class SwapDemo{
    public static  void main(String[] args) {
        int i = 10;
        int j = 20;

        i = i ^ j;
        j = i ^ j;
        i = i ^ j;

        System.out.println("i=" + i + ";j=" + j);
        // "i=20;j=10"
    }
}

*方式四:一句话实现交换

* 代码块 *

  • * 了解即可,装逼必会 *
public class SwapDemo{
    public static  void main(String[] args) {
        int i = 10;
        int j = 20;

        j = ( i + j ) - ( i = j );

        System.out.println("i=" + i + ";j=" + j);
        // "i=20;j=10"
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

剑指offer之面试题12 大数相加 实现任意两个整数的加法

剑指offer面试题12  打印从1到最大的n位10进制数 。陷阱在于  当输入的n很大时,不管用int 或 long long 都会溢出。这个代码 剑指offer源码上已经给出。于此相关的题目是  ...

Java面试题---只用两个变量,如何做到把两个整数交换?

题目:只用两个变量,如何做到把两个整数交换?一般正常没有限制,我们用三个变量,是这样做的。 这个学过一点点C或者编程语言的都会,这里用到了三个变量。那么只用两个变量,如何做呢?、答案是 “异或” “...

面试题→交换两个变量的值

面试题:交换两个变量 也许当你听到这道题的时候会暗暗的发笑,这么简单的算法题竟然拿出来作为面试题考,是不是也在怀疑这家公司的本身的能力与规模了呢。 交换两个变量:例如num1=5,num2=6→n...
  • yhc0322
  • yhc0322
  • 2011年08月11日 21:04
  • 1186

一道面试题——不用中间变量交换两个整型变量的值

           分类: C/C++     已经进入九月份了,马上又要进入新一轮的校园招聘了,想想自己也已经毕业一年多了,依稀还记得当年面试笔试时遇到的一些面试题,...

谷歌面试题:输入是两个整数数组,他们任意两个数的和又可以组成一个数组,求这个和中前k个数怎么做?

谷歌面试题:输入是两个整数数组,他们任意两个数的和又可以组成一个数组,求这个和中前k个数怎么做? 分析: “假设两个整数数组为A和B,各有N个元素,任意两个数的和组成的数组C有N^2个元素。...

19. 中兴面试题:输入两个整数n和m, 从数列1,2,...,n中任意选择几个数,使其和等于m, 要求编写程序输出所有的组合

2010年中兴面试题 编程求解: 输入两个整数 n 和 m,从数列1,2,3.......n中随意取几个数, 使其和等于 m ,要求将其中所有的可能组合列出来. 分析: 可以...
  • hhh3h
  • hhh3h
  • 2014年03月12日 13:32
  • 1358

【微软100题】2010年中兴面试题 编程求解: 输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数, 使其和等于 m

package test; /** * 2010年中兴面试题 编程求解: 输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数, 使其和等于 m * ,要求将其中所有的可...

剑指offer 面试题41 递增数组中和为s的两个数字 | 和为s的连续整数序列

#include using namespace std; void TwoNum(int* num,int len,int s){ if(!num||len

面试题41:和为S的两个数字和为S的连续整数序列

和为S的两个数字和为S的连续整数序列

谷歌面试题:输入是两个整数数组,他们任意两个数的和又可以组成一个数组,求这个和中前k个数怎么做?

分析: “假设两个整数数组为A和B,各有N个元素,任意两个数的和组成的数组C有N^2个元素。 那么可以把这些和看成N个有序数列: A[1]+B[1] ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面试题 :实现两个整数变量的交换
举报原因:
原因补充:

(最多只允许输入30个字)