给定int a和intb,在不使用if-else等比较和判断运算符的情况下返回较大的那个数。若两数相同则返回任意一个。
测试样例:
1,2
返回:2
解法1:位运算
class Max {
public:
int getMax(int a, int b) {
// write code here
b = a - b;
a -= b&(b >> 31);
return a;
}
};
b >> 31的目的是检测a-b的差值是正数还是负数;若a<b a=a-(a-b),若a>b a=a-0。
解法2:one line code
class Max {
public:
int getMax(int a, int b) {
// write code here
return (a+b+abs(a-b))/2;
}
};