锁定老帖子 主题:不用判断语句求俩数中的大(或者小)数
精华帖 (0) :: 良好帖 (16) :: 新手帖 (3) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-10
最后修改:2009-12-10
我只知道肯定要用位运算,这样是最快的,至于是否用到加减乘除,我个人认为不需要,要用上的话还不如if else 快!
|
|
返回顶楼 | |
发表时间:2009-12-10
int max(int a,int b){
int[] max ={a,a,b}; String ab = (a-b)+""; String ba = (b-a)+""; int index=ab.length()-ba.length()+1; return max[index]; } |
|
返回顶楼 | |
发表时间:2009-12-10
night_stalker 写道 Trustno1 写道 int max(int x,int y)
{ return x ^ ((x ^ y) & -(x < y)); } 这是 C …… 太适合做 bit 运算了。题目的难点之一便是用 java …… 嘛,各种奇怪的解答都是有的: def max x, y [y, x, x][(x <=> y) + 1] end 莫非我眼花 -(x < y)是boolean,用了它还需要什么位运算么。 |
|
返回顶楼 | |
发表时间:2009-12-10
这题出的跟语言,速度没关系吧。
就是程序员的脑筋急转弯吧 |
|
返回顶楼 | |
发表时间:2009-12-10
int max(int a,int b){ int [] num = {a,b}; Arrays.sort(num); return num[1]; } |
|
返回顶楼 | |
发表时间:2009-12-10
最后修改:2009-12-10
这题用数组方便的很嘛
int max(int a, int b) { int[] c = {a, b}; int[][] d = {{c[(a - b) >>> 31], a}, {b, c[(a - b) >>> 31]}}; return d[a >>> 31][b >>> 31]; } 出这题的人不大可能是考数学功底,主要还是看你脑子能不能转过弯来。 |
|
返回顶楼 | |
发表时间:2009-12-10
superxielei 写道 int getMaxNum(int a,int b){
double x = (double)a; double y = (double)b; return (int)(x/2+y/2+Math.abs(x/2-y/2)); } 题目不是要求,不能使用Math包么 |
|
返回顶楼 | |
发表时间:2009-12-10
最后修改:2009-12-10
int getMaxNum(int a,int b){ Set<Integer> set = new TreeSet<Integer>(); set.add(a); set.add(b); return set.toArray()[1]; }只是不更好。 |
|
返回顶楼 | |
发表时间:2009-12-10
Hooopo 写道 min = (a + b - (a - b).abs) / 2.0 sorry,有人回复了........ 不是不能用math函数吗 |
|
返回顶楼 | |
发表时间:2009-12-10
还有楼主的try{}catch(){}也不可以用的,因为这也是一个系统默认的判断啊
|
|
返回顶楼 | |