您的位置:首页 > 其它

无判断max

2015-10-16 09:56 176 查看
请编写一个方法,找出两个数字中最大的那个。条件是不得使用if-else等比较和判断运算符。给定两个int ab,请返回较大的一个数。若两数相同则返回任意一个。测试样例:
1,2
返回:2


解法:
b=a-b;
如果a>b,则,此时b>0,b右移31位变成0,如果a<b则此时b<0,右移31位为-1(32个1),此时b&(b>>31)==b,a-(a-b)==b;
a-=b&(b>>31)

int getMax(int a, int b) {
// write code here
b=a-b;
a-=b&(b>>31);
return a;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: