无判断max 牛客网 程序员面试金典 C++ Python
-
题目描述
-
请编写一个方法,找出两个数字中最大的那个。条件是不得使用if-else等比较和判断运算符。
-
给定两个int a和b,请返回较大的一个数。若两数相同则返回任意一个。
-
测试样例:
-
1,2
-
返回:2
C++
class Max {
public:
//run:5ms memory:472k
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;
}
};
Python
class Max:
#run:40ms memory:5688k
def getMax(self, a, b):
b = a - b
a -= b&(b>>31)
return a