首页 > 试题广场 >

无判断max

[编程题]无判断max
  • 热度指数:8607 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

给定int a和intb,在不使用if-else等比较和判断运算符的情况下返回较大的那个数。若两数相同则返回任意一个。

测试样例:
1,2
返回:2
推荐
public int getMax(int a ,int b){
    b = a-b;//此时b>>31为1则b小于0即a<b,若b>>31为0 则a>b
    a- = b&(b>>31); //若a<b a=a-(a-b),若a>b a=a-0  
    return a;
}
类似交换两个数大小
public int[2] exchangeNum(int[2] num){
    num[1] = num[0]-num[1];
    num[0] = num[0]-num[1];
    num[1] = num[0]+num[1];
    return num;
}

编辑于 2015-08-16 16:25:18 回复(21)

问题信息

难度:
0条回答 18434浏览

热门推荐

通过挑战的用户

查看代码