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

原创 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"
    }
}

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

相关文章推荐

有关Java中两个整数的交换问题

在程序开发的过程,要交换两个变量的内容,是一种比较常见的事情。在排序算法中,就有一种就叫做“交换排序法”。在所有的排序算法,交换要排序的集合中的两个元素,几乎是必须的过程。在Java中交换两个元素的内...

java编程实现两个数字的交换

这个题目有三种解法。 1这个题目,我们解决的思路是 搞一个中间变量 来临时存储一个变量的值; 我们这里给下参考代码: 1 2 3 4...

请自己实现两个整数变量的交换(多种方法)

int a=1,b=2; System.out.println("a="+a+" b="+b); //用位异或实现两个变量值的交换 a=a^b; ...

Java语言基础(七) : 循环结构之 while 循环

while循环的语法格式: while(判断条件语句) { 循环体语句; }扩展格式: 初始化语句; while(判...

Java 两个变量的值互相交换

这里不使用中间变量int a=3,b=4;a=a+b; b=a-b; a=a-b;

交换两个数不使用第三方变量=!!=深入理解按位异或运算符

不使用第三方变量交换两个变量的值这需要进行位操作,必较麻烦的, 在学习程序语言和进行程序设计的时候,交换两个变量的值是经常要使用的。通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完...

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

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

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

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

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

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

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

package test; /** * 2010年中兴面试题 编程求解: 输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数, 使其和等于 m * ,要求将其中所有的可...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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