今日笔试题:
对两个整数变量进行互换,要求在不使用第三方变量的前提下?
相信对于这个题目,大家都不陌生,在学习Java基础班的时候,都会学习这个题目的做法,但是当你们学习完半年后,还能记住怎么做吗?有童鞋说:老师,我刚学完3天就忘了!老师,我当时就没听懂!!!那么对于这种情况怎么办呢?老师教你们 个方法(也是思想)。
对两个整数变量进行互换,要求在不使用第三方变量的前提下?
相信对于这个题目,大家都不陌生,在学习Java基础班的时候,都会学习这个题目的做法,但是当你们学习完半年后,还能记住怎么做吗?有童鞋说:老师,我刚学完3天就忘了!老师,我当时就没听懂!!!那么对于这种情况怎么办呢?老师教你们 个方法(也是思想)。
在这里我把思考的过程和演算的过程都写下,面试的时候,你们只需要写下最终
的结果就可以了。
1,我们知道一个数异或另一个数2次,结果还是这个数。举例:2^3^3=2.这个 大家明白吧,应该没问题.同样,3^2^3=2,其实我只是把顺序换了下位置,这个都不难理解 .
2, 题目中不是说两个整数变量吗?那么我们就设两个整数变量.比如: int x = 2; int y = 3;现在我们就把这两个数用异或的方法进行数值 换位.
3,由于我们人的思想习惯是xy的顺序,那么我们就先来换位x,于是有:
x = x^y;//此时x=2^3.这时再算出y,于是有
y = x^y;//相当于2^3^3=2,这时的y=2,我们完成了一个换位.于是开始换x.
此时x^y=2^3^2=3,那么我们就把这个值赋给x,那么就是
x = x^y;//相当于2^3^2=3.这时x=3;
那么到这里,这道笔试题就算做完了,大家看是不是很简单.如果你不用数字代换的话,很 容易就迷失在xy的替换中,那么当你用注解的形式写出数字代换过程,这个题就是白给的分.
的结果就可以了。
1,我们知道一个数异或另一个数2次,结果还是这个数。举例:2^3^3=2.这个 大家明白吧,应该没问题.同样,3^2^3=2,其实我只是把顺序换了下位置,这个都不难理解 .
2, 题目中不是说两个整数变量吗?那么我们就设两个整数变量.比如: int x = 2; int y = 3;现在我们就把这两个数用异或的方法进行数值 换位.
3,由于我们人的思想习惯是xy的顺序,那么我们就先来换位x,于是有:
x = x^y;//此时x=2^3.这时再算出y,于是有
y = x^y;//相当于2^3^3=2,这时的y=2,我们完成了一个换位.于是开始换x.
此时x^y=2^3^2=3,那么我们就把这个值赋给x,那么就是
x = x^y;//相当于2^3^2=3.这时x=3;
那么到这里,这道笔试题就算做完了,大家看是不是很简单.如果你不用数字代换的话,很 容易就迷失在xy的替换中,那么当你用注解的形式写出数字代换过程,这个题就是白给的分.
最后,董老师告诫大家学习java基础主要学习思想,其次才是代码
另解:
两数字相加减也可以达到相同的效果
a = a + b
b = a - b
a = a - b