一道经典面试题想到的
不使用第三个变量完成两个整数的交换,这个面试题大概大家都碰到过。如下是java中的代码:
?
?
还有另外一种方法,且效率更快:
?
?
当然以上两种的算法对应js中也支持,如下:
?
24 楼 anywhere 2010-04-19 如果是企业开发,这样的面试题目没有水准了,
现在算法已是次要的了,
精力应用在业务逻辑实现上,
已经有相当的算法在网上可以找到,
很多也是open source的,
就连google的搜索算法都是。 25 楼 goon 2010-04-19 上学时的练习题。。。 26 楼 bingufo 2010-04-20 phenix9527 写道int x = 10;
int y = 20;
x = y+0*(y=x);
这个方法比较好,我以前有看到过
哈哈,果然很简单,我编译通过了.佩服 27 楼 lichong_87 2010-04-20 phenix9527 写道int x = 10;
int y = 20;
x = y+0*(y=x);
这个方法比较好,我以前有看到过
这个是怎么实现的啊?……Java可以但是在C++下面执行结果不对啊,没有交换啊…… 28 楼 jimmy9495 2010-04-20 lichong_87 写道phenix9527 写道int x = 10;
int y = 20;
x = y+0*(y=x);
这个方法比较好,我以前有看到过
这个是怎么实现的啊?……Java可以但是在C++下面执行结果不对啊,没有交换啊……
虽然结果是跑出来了,但是对于实现原理是怎样的还不是很清晰,有知道的大虾解释下吧!
29 楼 yangpeihai 2010-04-20 phenix9527 写道int x = 10;
int y = 20;
x = y+0*(y=x);
这个方法比较好,我以前有看到过
写得好,学习一下 30 楼 zhaolaiwei 2010-04-21 hiqrf 写道lbfhappy 写道hiblue 写道x = y+0*(y=x);
这个实际上是有隐含变量的.
你指的隐含变量是哪个?
用来保存0*(y=x)的值,你研究一下编译原理就明白了。
想明白这个表达式的系统编译执行过程?有哪位高人请指点? 31 楼 jslfl 2010-04-21 hiblue 写道x = y+0*(y=x);
这个实际上是有隐含变量的.
运算顺序的技巧而已,没用到啥隐含变量吧,, 32 楼 zhengtianbing123 2010-04-21 satanest 写道phenix9527 写道int x = 10;
int y = 20;
x = y+0*(y=x);
这个方法比较好,我以前有看到过
这个方法厉害
这个真的很巧妙! 33 楼 jakend 2010-04-28 phenix9527 写道int x = 10;
int y = 20;
x = y+0*(y=x);
这个方法比较好,我以前有看到过
此方法,针对java 可以,针对c++ 就不行,java引用了第三方变量。
34 楼 l8653668 2010-05-15 jakend 写道phenix9527 写道int x = 10;
int y = 20;
x = y+0*(y=x);
这个方法比较好,我以前有看到过
此方法,针对java 可以,针对c++ 就不行,java引用了第三方变量。
各位大牛可以解释一下么?还是看不懂... 35 楼 smzd 2010-05-20 []的引入不算变量?没有名字的变量而已!{}也是一样的